Dplyr:如果列包含字符串,如何改变变量


如果列包含特定字符串,您可以在dplyr中使用以下基本语法来改变变量:

 library (dplyr)

df %>% mutate_at(vars(contains(' starter ')), ~ (scale(.) %>% as. vector ))

此特定语法将scale()函数应用于列名称中包含字符串“starter”的数据框中的每个变量。

以下示例展示了如何在实践中使用此语法。

示例:如果列包含字符串,则改变变量

假设我们在 R 中有以下数据框:

 #create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E', 'F'),
                 starter_points=c(22, 26, 25, 13, 15, 22),
                 starter_assists=c(4, 5, 10, 14, 12, 10),
                 bench_points=c(7, 7, 9, 14, 13, 10),
                 bench_assists=c(2, 5, 5, 4, 9, 14))

#view data frame
df

  team starter_points starter_assists bench_points bench_assists
1 to 22 4 7 2
2 B 26 5 7 5
3 C 25 10 9 5
4 D 13 14 14 4
5 E 15 12 13 9
6 F 22 10 10 14

我们可以使用以下语法将scale()函数应用于列名称中包含字符串“starter”的数据框中的每个变量。

 library (dplyr)

#apply scale() function to each variable that contains 'starter' in the name
df %>% mutate_at(vars(contains(' starter ')), ~ (scale(.) %>% as. vector ))

  team starter_points starter_assists bench_points bench_assists
1 A 0.2819668 -1.3180158 7 2
2 B 1.0338784 -1.0629159 7 5
3 C 0.8459005 0.2125832 9 5
4 D -1.4098342 1.2329825 14 4
5 E -1.0338784 0.7227828 13 9
6 F 0.2819668 0.2125832 10 14

使用这种语法,我们能够应用scale()函数来缩放包含“starter”的每一列,使得它们的值现在平均值为0,标准差为1。

请注意,以下列已被修改:

  • 起始点
  • 首发助攻

所有其他列保持不变。

另请注意,我们可以使用此语法应用我们想要的任何函数。

在前面的示例中,我们选择使用名称中的字符串“starter”来缩放每列。

但是,我们可以做一些更简单的事情,例如将名称中包含“starter”的每列的值乘以二:

 library (dplyr)

#multiply values by two for each variable that contains 'starter' in the name
df %>% mutate_at(vars(contains(' starter ')), ~ (. * 2 ))

  team starter_points starter_assists bench_points bench_assists
1 A 44 8 7 2
2 B 52 10 7 5
3 C 50 20 9 5
4 D 26 28 14 4
5 E 30 24 13 9
6 F 44 20 10 14

请注意, starter_pointsstarter_assists列的值已乘以 2,而所有其他列保持不变。

其他资源

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

如何使用 dplyr 删除行
如何使用 dplyr 按索引选择列
如何使用 dplyr 过滤包含特定字符串的行

添加评论

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