此问题在此处已有答案:
Group by multiple columns in dplyr, using string vector input(10个答案)
六年前关闭了。
如果我不知道列名,但想通过变量指定它,如何将列名传递给dplyr?
例如,这起作用:
require(dplyr)
df <- as.data.frame(matrix(seq(1:9),ncol=3,nrow=3))
df$group <- c("A","B","A")
gdf <- df %.% group_by(group) %.% summarise(m1 =mean(V1),m2 =mean(V2),m3 =mean(V3))
但这并不
require(dplyr)
someColumn = "group"
df <- as.data.frame(matrix(seq(1:9),ncol=3,nrow=3))
df$group <- c("A","B","A")
gdf <- df %.% group_by(someColumn) %.% summarise(m1 =mean(V1),m2 =mean(V2),m3 =mean(V3))
5条答案
按热度按时间kxxlusnw1#
我只是在Group by multiple columns in dplyr, using string vector input上给出了类似的答案,但这是为了更好地衡量:
dplyr
中添加了允许使用字符串对列进行操作的函数。这些函数与常规dplyr
函数的名称相同,但以下划线结尾。这些函数在this vignette中有详细描述。给定OP中的
df
和someColumn
,现在可以很好地工作了:请注意,它是
group_by_
,而不是group_by
,并且使用%>%
运算符,因为%.%
已被弃用。f5emj3cl2#
这里有一个简单问题的答案,通过挑选哈德利对他发布的欺骗的解决方案来获得。
FWIW,我的用例涉及按一个变量列和一个常量列分组。解决方案是:
最后,发布的
eval
解决方案不起作用。这只是创建了一个新列,其值都是someColumn
eval
的值。w6mmgewl3#
你可以使用summarise_如下:
avwztpqn4#
我试着为我自己的问题问同样的问题,然后我找到了一个解决方案,我用eval(as.symbol())封装了表达式。
jjhzyzn05#
我希望你只需要使用eval