用dplyr在R中按名称、索引、字母和某些单词选择列

1,131 阅读7分钟

The postSelect Columns in R by Name, Index, Letters, & Certain Words with dplyrappeared first onErik Marsja.

在这个R教程中,你将学习如何在数据框架中选择列。首先,我们将在一些例子中使用基础R,来选择某些列。其次,我们将使用dplyr从数据框中获取列。

概要

在第一节中,我们将看看你需要什么来学习本教程。第二部分,我们将回答一些可能使你来到这篇文章的问题。第三,我们将使用基础R来选择数据框架中的某些列。在本节中,我们还将使用R中的大运算符%in%来选择特定的列。第四,我们将使用dplyr和select()系列函数。例如,我们将使用select_if() 来获得所有的数字列和一些辅助函数。这些辅助函数使我们能够选择以某个词或某个特定字符开始或结束的列,例如。

select columns in R with [] and dplyr

注意,如果你,例如,想在R数据框中取绝对值,只选择数字列,select_if() 函数也很好。

我如何在R中选择一个列?

要在R中选择一个列,你可以使用括号,例如:YourDataFrame['Column'] ,将取名为 "Column "的列。此外,我们还可以使用dplyr和select()函数,通过名称或索引获得列。例如,select(YourDataFrame, c('A', 'B') 将从数据框架中获取名为 "A "和 "B "的列。

我如何在R Dplyr中选择一个列?

如果你想在R中使用dplyr来选择一个列,你可以使用select() 函数。例如,select(Data, 'Column_to_Get') 将从数据框架 "Data "中获得 "Column_to_Get "列。

{ "@context":"schema.org", "@type":"FAQPage", "mainEntity":[{ "@类型":"问题", "名称":"我如何在R中选择一个列?", "acceptedAnswer":{ "@type":"答案", "文本":"要在R中选择一个列,你可以使用括号,例如,YourDataFrame['Column'] ,将取名为 \"Column\" 的列。此外,我们还可以使用dplyr和select()函数,通过名称或索引获得列。例如,select(YourDataFrame, c('A', 'B') 将从数据框架中获取名为 \"A\" 和 \"B\" 的列。" } , { "@type":"问题", "名称":"我如何在R Dplyr中选择一个列?", "acceptedAnswer":{ "@type":"答案", "文本":"如果你想用dplyr在R中选择一个列,你可以使用select() 函数。例如,select(Data, 'Column_to_Get') 将从数据框架 \"Data\"中获得列 \"Column_to_Get\"。" } } ]。

在下一节中,我们将了解本帖的先决条件以及如何安装dplyr(或Tidyverse)等R包。

前提条件

此外,我们将使用readxl包从Excel文件中读取示例数据。此外,如果你想使用dplyr的select() 和不同的辅助函数(例如,startsWith(), endsWith()),你也需要安装dplyr。值得指出的是,只要使用"-"字符,你就可以使用select()(来自dplyr)来在R中删除列

也许值得指出的是,readxl和dplyr都是tidyverse的一部分。Tidyverse附带了许多伟大的包,这些包都有很好的功能。除了用dplyr(Tidyverse的一部分)选择或删除列之外,你还可以用lubridate包从R中的日期中提取年份用ggplot2创建散点图,并计算描述性统计。也就是说,你可以根据你的需要,使用install.packages() 功能安装这些r包中的一个。例如,安装dplyr是通过在R中运行这个:install.packages(c('dplyr', 'readxl'))

数据实例

在我们继续并练习在R中选择列之前,我们将从一个.xlsx文件中读取数据

library(readxl) dataf <- read_excel("add_column.xlsx") head(dataf)

Code language: R (r)

Example data to select columns from

这个例子数据集是我们在教程中使用过的,其中我们在其他列的基础上增加了一个列。我们可以看到,它包含9个不同的列。如果我们想的话,我们可以检查数据框架的结构,这样我们就可以看到我们有什么样的数据。

str(dataf)

Code language: R (r)

data types

现在,我们看到也有20行,而且除了一列之外,其他都是数字。在最近的一篇文章中,你可以学习如何用dplyr重命名R中的列。在下一节中,我们将学习如何使用基础R从这个数据框架中选择某些列。

如何使用基础R选择某些列

在本节中,我们将练习使用基础R选择列。首先,我们将使用列索引,其次,我们将使用列名。

例1:通过索引选择列

下面是一个关于如何在R中通过索引选择列的例子。

dataf[, c(1, 2, 3)]

Code language: R (r)

First 6 rows of the selected columns in R

所选列的前6行

正如你所看到的,我们通过使用它们的索引(1,2,3)来选择前三列。注意,我们还在括号内使用了","。这样做是为了获得列,而不是对行进行子集(即在带有索引的向量后面放置",")。在进入下一个例子之前,可能值得知道的是,向量可以包含一个序列。例如,我们可以用: ,生成一个数字序列。例如,用c(1:3) 替换c(1, 2, 3) ,会得到与上面一样的输出。当然,如果我们愿意,我们也可以选择例如第三、第五和第六列。在下一个例子中,我们将根据某些列的名称进行子集。注意,数字序列也可以用seq()函数在R中生成

例2:按名称选择特定列

下面是我们如何在R中按名称选择列。

dataf[, c('A', 'B', 'Cost')]

Code language: R (r)

First 6 rows of the columns selected by name

选择列

在上面的代码块中,我们的做法基本上与第一个例子相同。然而,请注意,我们是如何删除数字并添加列名的。在向量中,也就是说,我们现在使用了我们想要选择的列的名称。在下一个例子中,我们将学习一个巧妙的小技巧,在按名称选择列时使用%in%操作符。

例3:使用%in%

下面是我们如何利用%in%操作符从R数据框中按名称获取列。

head(dataf[, (colnames(dataf) %in% c('Depr1', 'Depr2', 'Depr4', 'Depr7'))])

Code language: R (r)

在上面的代码块中,我们使用了伟大的%in%操作符。注意到字符向量中的一些不同之处了吗?有一列在示例数据中并不存在。最酷的是,即使我们在使用%in%操作符时这样做,我们也会得到实际存在于数据框中的列。在下一节中,我们将看看几个使用dplyr的select() 和一些伟大的辅助函数的例子。

如何用dplyr在R中选择列

在本节中,我们将从选择列的基本例子开始(例如,通过名称和索引)。然而,重点是将辅助函数与select() ,以及select_if() 函数一起使用。

例4:使用select()函数按索引对列进行子集处理

下面是我们如何使用select() 函数按索引获取列。

library(dplyr) dataf %>% select(c(2, 5, 6))

注意我们是如何使用另一个伟大的运算符的:%>%。这是管道运算符,在这之后,我们使用了select()函数。同样,在用base R选择列时,我们添加了一个带有我们想要的列的索引的向量。在下一个例子中,我们基本上会做同样的事情,但要按列名来选择。

例5:用select()按名称获取列

下面是我们如何使用select() 来获取我们想要的列名的方法。

library(dplyr) dataf %>% select(c('A', 'Cost', 'Depr1'))

Code language: R (r)

在上面的代码块中,我们只是添加了向量中各列的名称。很简单!在下一个例子中,我们将看看如何使用select_if() 来选择包含特定数据类型的列。

例6:在R中选择所有数字列

下面是如何在R数据框中选择所有的数字列。

dataf %>% select_if(is.numeric)

Code language: CSS (css)

记住,除了一列之外,所有的列都是数字类型的。这意味着我们在运行上述代码时会得到9列中的8列。另一方面,如果我们加入is.character 函数,我们将只选择第一列。在下一节,我们将学习如何获得以某个字母开头的列。

例7:选择以某个字母开头的列

下面是我们如何使用starts_with() 辅助函数和select() 来获取所有以字母 "D "开头的列。

dataf %>% select(starts_with('D'))

Code language: R (r)

选择名称以某个字母开头的列是很容易的。在starts_with() 辅助函数中,我们只是添加了字母。

例8:选择以特定字母结尾的列

下面是我们如何使用ends_with() 辅助函数和select() 来获得所有以字母 "D "结尾的列。

dataf %>% select(ends_with('D'))

Code language: R (r)

注意,在这个例子的数据集中,只有一列以字母 "D "结尾。事实上,所有的列名都以唯一的字符结尾。也就是说,在这里,用这种方法选择列是没有意义的。这里值得注意的是,在使用starts_with()ends_with() 这两个辅助函数时,我们可以使用一个词。让我们看看吧!

例9:选择以某个词开始的列

下面是我们如何选择以某一特定单词开头的某些列。

dataf %>% select(starts_with('Depr'))

Code language: R (r)

当然,"Depr "并不是一个真正的词,而且,是的,我们得到的列与例7中的完全一样。然而,你会明白这个意思,并且应该理解如何在你自己的应用程序中使用这个方法。有一个例子,当这样做是有意义的,那就是有多个以相同字母开头的列,但其中一些以相同的词开头。在最后一个例子中,我们将选择某些包含一个字符串(或一个单词)的列名。

例10:选择包含某个字符串的列

下面是我们如何选择某些以字符串开头的列。

dataf %>% select(starts_with('Depr'))

Code language: R (r)

当然,"Depr "并不是一个真正的单词,而且,是的,我们得到的列与例7中的完全一样。然而,你得到了这个想法,应该明白如何在你自己的应用程序中使用这个方法。有一个例子,当这样做是有意义的,就是当有多列以相同的字母开头,但其中一些以相同的词开头时。在进入下一节之前,可能值得一提的是dplyr包的另一个伟大功能。最后一个例子中,我们将选择某些包含字符串(或单词)的列名。

例11:选择包含某个字符串的列

下面是我们如何选择某些以字符串开头的列。

dataf %>% select(contains('pr'))

Code language: R (r)

同样,这个特殊的例子在示例数据集上并没有意义。有一个最后的辅助函数值得一提:matches() 。这个函数可以用来检查列名是否包含一个模式(正则表达式),如数字。现在你已经选择了你需要的列,你可以继续操作你的数据,并为数据分析做好准备。例如,你现在可以继续在R中创建虚拟变量或添加一个新的列

总结

在这篇文章中,你已经学会了如何使用基础R和dplyr选择某些列。具体来说,你已经学会了如何根据索引或名称从数据框架中获取列。此外,你还学会了如何选择特定类型的列。在这之后,你学会了如何根据列名是否以字母开头或结尾进行子集。最后,你还学会了如何根据列是否包含一个字符串来进行选择。希望你觉得这篇博文有用。如果你做到了,请在你的社交媒体账户上分享它,在你的项目报告等中添加本教程的链接,并在下面留言。

how to select certain columns in R

The postSelect Columns in R by Name, Index, Letters, & Certain Words with dplyr首次出现在Erik Marsja上。