使用多个不同的分组变量(dplyr)汇总数据帧
我有一个数据框“my_data”,包含6列:使用多个不同的分组变量(dplyr)汇总数据帧,r,dplyr,R,Dplyr,我有一个数据框“my_data”,包含6列: group1.members group2.members group3.members price price.2 price.3 1 1 1 800 877 334 1 2 1 850 877 334 2
group1.members group2.members group3.members price price.2 price.3
1 1 1 800 877 334
1 2 1 850 877 334
2 2 1 859 877 334
3 1 1 859 877 334
3 1 2 870 877 334
2 2 2 870 877 334
2 3 2 870 877 334
1 3 3 880 877 334
我想按行将我的_数据的“price”列总结成几个单独的数据帧,在每个数据帧的不同“group.member”列上使用group_by。但是,似乎那个小组不允许这样做
这就是我的想法:
my_data <- as.data.frame(data)
num_of_years <- c(1,2,3)
for(i in 1:length(num_of_years)){
price_means <- my_data %>% group_by(my_data[i]) %>%
select(-value) %>%
summarise_each(funs(mean(., na.rm=TRUE))) %>%
ungroup
assign(paste("PriceMeans",i,sep=""),price_means, envir = .GlobalEnv)
}
my_数据%
总结每一项(funs(平均值(,na.rm=TRUE))%>%
解组
分配(粘贴(“PriceMeans”,i,sep=“”),price_表示,envir=.GlobalEnv)
}
换言之:
- 对于i=1,使用group_by(group1.members)
- 对于i=2,使用group_by(group2.members)
- 对于i=3,使用group_by(group3.members)
for(i in 1:length(my_groups)){
# construct the group to select
current.group <- my_groups[i]
current.group <- paste0("memb_", current.group)
# construct the groups to exclude
groups.to.drop <- my_groups[-i]
groups.to.drop <- paste0("memb_", groups.to.drop)
# Get Means
Means <- data %>% group_by_(as.name(current.group)) %>%
select(- c(ID, get(groups.to.drop))) %>%
summarise_each(funs(mean(., na.rm = TRUE)))
Means <- Means[,-1:-(length(my_groups)-1)]
Means <- as.list(Means)
assign(x = paste0("Means_",i),
value = Means,
envir = parent.env(new.env())
}
for(i in 1:length(my_组)){
#构造要选择的组
current.group我绝不是一个dplyr
专家,但这似乎完成了您想要做的事情:
for (i in 1:length(num_of_years)){
var1 <- names(my_data)[[i]]
var2 <- c(var1)
price_means <- my_data %>%
select(eval(i), price, price.2, price.3) %>%
group_by_(var2) %>%
summarise_each(funs(mean(., na.rm=TRUE))) %>%
ungroup()
assign(paste("PriceMeans",i,sep=""),price_means, envir = .GlobalEnv)
}
for(1中的i:长度(年数)){
var1%
总结每一项(funs(平均值(,na.rm=TRUE))%>%
解组()
分配(粘贴(“PriceMeans”,i,sep=“”),price_表示,envir=.GlobalEnv)
}
您需要使用lazyeval方法来编写函数。谢谢!我查看了lazyeval的文档,但不了解如何实现。您可以提供一个简短的示例吗?这个特定的链接解释了dplyr library@Arun如何处理lazyeval,似乎我们都有完全相同的句柄。这是c你会考虑改变吗?我只会问,因为我在R标签下活跃了很多时间(很多人已经把这个句柄联系到我了)。谢谢,这很有帮助。最后我用了一些非常相似的东西(见我上面的问题编辑)。