我有一个数据框:
df <- data.frame(Category = c(rep("A", 3), rep("B", 3)), Value = rnorm(6))
df
Category Value
1 A -0.94968814
2 A 2.56687061
3 A -0.15665153
4 B -0.47647105
5 B 0.83015076
6 B -0.03744522
现在我想添加另一列,即每个类别的平均值。这可以通过dplyr包非常简单地完成:
df %>% group_by(Category) %>%
summarize(mean = mean(Value))
现在在一段代码中我的问题是:我不能使用mean(Value)
,但我有一个知道列名的变量名:columnName = "Value"
但不幸的是,这不起作用:
columnName = "Value"
df %>% group_by(Category) %>%
summarize(mean = mean(columnName))
警告消息:1:在mean.default(“Value”)中:参数不是 数字或逻辑:返回NA 2:在mean.default(“Value”)中:
参数不是数字或逻辑:返回NA
如何使用变量?
传递列名答案 0 :(得分:2)
我们可以将get
与aggregate
aggregate(get(columnName)~Category, df, mean)
# Category get(columnName)
#1 A -0.5490751
#2 B -0.2594670