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函数具有相同的名称,但以下划线结尾.这个小插图详细描述了这些功能.
鉴于df和someColumn来自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)
| 归档时间: |
|
| 查看次数: |
16447 次 |
| 最近记录: |