我正在尝试使用R中的dplyr进行汇总和分组,但是当我使用变量代替显式调用汇总列时,它使用dist的总和来表示每行的整个数据集,而不是正确分组。这可以从下面的TestBad和TestGood之间的差异中轻松看出。我只是希望能够像在TestBad中一样使用GraphVar变量复制TestGood的结果。
require("dplyr")
GraphVar <- "dist"
TestBad <- summarise(group_by_(cars,"speed"),Sum=sum(cars[[GraphVar]],na.rm=TRUE),Count=n())
testGood <- summarise(group_by_(cars,"speed"),Sum=sum(dist,na.rm=TRUE),Count=n())
谢谢!
答案 0 :(得分:4)
您需要标准评估函数summarise_
以及lazyeval::interp
。
library(lazyeval)
cars %>%
group_by_("speed") %>%
summarise_(Sum = interp(~sum(var, na.rm = TRUE), var = as.name(GraphVar)),
Count = ~n())
答案 1 :(得分:1)
按名称引用一个或多个列的最新用法似乎是
cars %>% group_by(across("speed")) %>% ...
cars %>% group_by(across(c("speed", "dist"))) %>% ...
请参阅 vignette("colwise")
,第 Other verbs
节。