使用dplyr在R中使用带有变量列名的groupby中的函数

时间:2016-12-21 10:01:34

标签: r dplyr

我有一个数据框:

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

如何使用变量?

传递列名

1 个答案:

答案 0 :(得分:2)

我们可以将getaggregate

一起使用
aggregate(get(columnName)~Category, df, mean)

#    Category get(columnName)
#1        A      -0.5490751
#2        B      -0.2594670