【发布时间】:2019-01-27 09:47:04
【问题描述】:
我发现这个问题已经问过了,但没有正确的答案。 R using variable column names in summarise function in dplyr
我想计算两列平均值之间的差异,但列名应该由变量提供...到目前为止,我发现只有函数as.name 将列名作为文本提供,但这不知何故不起作用这里...
使用固定列名它可以工作。
x <- c('a','b')
df <- group_by(data.frame(a=c(1,2,3,4), b=c(2,3,4,5), c=c(1,1,2,2)), c)
df %>% summarise(mean(a) - mean(b))
使用可变列,它不起作用
df %>% summarise(mean(x[1]) - mean(x[2]))
df %>% summarise(mean(as.name(x[1])) - mean(as.name(x[2])))
由于这个问题在 3 年前就已经被问过了,而且 dplyr 正在良好的发展中,我想知道现在是否有答案。
【问题讨论】:
-
x有两个列名,所以是的,两个字符串。 -
你可以使用
get:df %>% summarise(mean(get(x[1])) - mean(get(x[2]))) -
哇,有帮助!随意张贴作为答案!为什么没有记录在案?我期待
as.name工作。