指定dplyr列名称

use*_*888 19 group-by r columnname dplyr

如果我不知道列名,但是想通过变量指定列名,我怎样才能将列名传递给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))
Run Code Online (Sandbox Code Playgroud)

但事实并非如此

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))
Run Code Online (Sandbox Code Playgroud)

edw*_*ard 19

我刚刚在Dplyr中使用字符串向量输入Group上给出了类似的答案,但是为了更好的衡量:允许您使用字符串对列进行操作的函数已被添加到dplyr.它们与常规dplyr函数具有相同的名称,但以下划线结尾.这个小插图详细描述了这些功能.

鉴于dfsomeColumn来自OP,现在这是一种享受:

gdf <- df %>% group_by_(someColumn) %>% summarise(m1=mean(V1),m2=mean(V2),m3=mean(V3))
Run Code Online (Sandbox Code Playgroud)

请注意,它是group_by_,而不是group_by,并且不推荐使用%>%运算符%.%.


Flo*_*adt -2

我希望你只需要使用 eval

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(eval(someColumn)) %.% summarise(m1 =mean(V1),m2 =mean(V2),m3 =mean(V3))
Run Code Online (Sandbox Code Playgroud)