如何在 dplyr 中选择不以字符串开头的列


您可以使用 R 中dplyr包中的以下函数来选择不以特定字符串开头的列:

方法 1:选择不以特定字符串开头的列

 df %>%
  select(-starts_with(" string1 "))

方法 2:选择不以多个字符串之一开头的列

 df %>%
  select(-starts_with(c(" string1 ", " string2 ", " string3 ")))

以下示例展示了如何在 R 中使用以下数据框来实际使用这些方法:

 #create data frame
df <- data. frame (store1_sales=c(12, 10, 14, 19, 22, 25, 29),
                 store1_returns=c(3, 3, 2, 4, 3, 2, 1),
                 store2_sales=c(8, 8, 12, 14, 15, 13, 12),
                 store2_returns=c(1, 2, 2, 1, 2, 1, 3),
                 promotions=c(0, 1, 1, 1, 0, 0, 1))

#view data frame
df

  store1_sales store1_returns store2_sales store2_returns promotions
1 12 3 8 1 0
2 10 3 8 2 1
3 14 2 12 2 1
4 19 4 14 1 1
5 22 3 15 2 0
6 25 2 13 1 0
7 29 1 12 3 1

示例 1:选择不以特定字符串开头的列

以下代码显示如何使用-starts_with()函数仅选择数据框中不以“store1”开头的列:

 library (dplyr)

#select all columns that do not start with "store1"
df %>%
  select(-starts_with(" store1 "))

  store2_sales store2_returns promotions
1 8 1 0
2 8 2 1
3 12 2 1
4 14 1 1
5 15 2 0
6 13 1 0
7 12 3 1

请注意,不会返回以“store1”开头的两列。

示例 2:选择不以多个字符串之一开头的列

以下代码演示如何使用-starts_with()函数仅选择数据框中不以“store1”或“prom”开头的列:

 library (dplyr)

#select all columns that do not start with "store1" or "prom"
df %>%
  select(-starts_with(c(" store1 ", " prom ")))

  store2_sales store2_returns
1 8 1
2 8 2
3 12 2
4 14 1
5 15 2
6 13 1
7 12 3

请注意,不会返回以“store1”或“prom”开头的列。

注意:默认情况下, start_with()函数不区分大小写。要使函数区分大小写,请在函数中使用ignore.case=FALSE参数。

其他资源

以下教程解释了如何使用 dplyr 执行其他常见任务:

如何使用 dplyr 按名称选择列
如何使用 dplyr 按索引选择列
如何在 dplyr 中将 select_if 与多个条件一起使用

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注