如何在R中选择包含特定字符串的列

1,872 阅读1分钟

你可以使用R中dplyr包的以下函数来选择包含特定字符串的列。

方法1:选择包含一个特定字符串的列

df %>%
  select(matches("string1"))

方法2:选择包含多个字符串中的一个字符串的列

df %>%
  select(matches("string1|string2|string3"))

下面的例子展示了如何在R语言中使用这些方法中的每一种,以及如何在下面的数据框架中进行实践。

#create data frame
df <- data.frame(mavs=c(12, 10, 14, 19, 22, 25, 29),
                 cavs=c(22, 41, 14, 15, 15, 19, 22),
                 hornets=c(8, 8, 12, 14, 15, 13, 12),
                 spurs=c(10, 12, 12, 16, 22, 28, 30),
                 nets=c(9, 7, 10, 22, 28, 23, 25))

#view data frame
df

  mavs cavs hornets spurs nets
1   12   22       8    10    9
2   10   41       8    12    7
3   14   14      12    12   10
4   19   15      14    16   22
5   22   15      15    22   28
6   25   19      13    28   23
7   29   22      12    30   25

例1:选择包含一个特定字符串的列

下面的代码显示了如何使用**matches()**函数,只选择名称中包含 "avs "字符串的列。

library(dplyr)

#select all columns that contain "avs" in the name
df %>%
  select(matches("avs"))

  mavs cavs
1   12   22
2   10   41
3   14   14
4   19   15
5   22   15
6   25   19
7   29   22

只有名称中包含 "avs "的列被返回。

在这个例子中,"mavs "和 "cavs "是唯一被返回的列。

例2:选择包含几个字符串之一的列

下面的代码显示了如何使用**matches()**函数,只选择名称中包含 "avs "或 "ets "的列。

library(dplyr)

#select all columns that contain "avs" or "ets" in the name
df %>%
  select(matches("avs|ets"))

  mavs cavs hornets nets
1   12   22       8    9
2   10   41       8    7
3   14   14      12   10
4   19   15      14   22
5   22   15      15   28
6   25   19      13   23
7   29   22      12   25

只有名称中包含 "avs "或 "ets "的列被返回。

注意,竖条(|)是R中的 "OR"运算符。

你可以随意将这些 "OR "运算符连在一起,以选择包含几个不同字符串之一的列。