gpt4 book ai didi

r - 使用多个不同的 group_by 变量(dplyr)来总结一个数据框

转载 作者:行者123 更新时间:2023-12-04 10:55:39 31 4
gpt4 key购买 nike

我有一个包含 6 列的数据框“my_data”:

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

我想按 ROW 将 my_data 的“价格”列汇总到几个单独的数据帧中,在每个不同的“group.member”列上使用 group_by。似乎 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)
}

换句话说:

  • 对于 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())
}

最佳答案

我绝不是 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)
}

关于r - 使用多个不同的 group_by 变量(dplyr)来总结一个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37348394/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com