下面是我想要执行的数据框架和代码。如下面所示,我想要group_by x以及color。x是一个字符串,因此我使用了group_by_at函数。
df <- data.frame(
color = c("Yellow", "Blue", "Green", "Red", "Magenta"),
values = c(24, 24, 34, 45, 49),
Quarter = c("Period1","Period2" , "Period3", "Period3", "Period1"),
Market = c("Camden", "StreetA", "DansFireplace", "StreetA", "DansFireplace"))
list = c("Market", "Quarter")
df_all <- do.call(rbind, lapply(list, function(x) {
df_l <- df %>%
group_by_at(x) %>%
group_by(color) %>%
summarise(values = sum(values)) %>%
mutate(cut = x) %>%
data.frame()
colnames(df_l)[colnames(df_l) == x] <- "Grouping"
df_l
}))问题是,在运行此代码时,它不是按x分组的。只有当我删除group_by(color)时,它才会按x分组。
我的目标是同时按x和color进行分组。
发布于 2019-10-21 15:26:28
如果我正确理解了您的问题,请将color和x包含在同一个group_by语句中:
df_all <- do.call(rbind, lapply(list, function(x){
df_l= df %>% group_by_at(c(x, "color")) %>%
summarise(values = sum(values)) %>%
mutate(cut= x) %>%
data.frame()
colnames(df_l)[colnames(df_l)==x] <- "Grouping"
df_l
}))这意味着:
Grouping color values cut
1 Camden Yellow 24 Market
2 DansFireplace Green 34 Market
3 DansFireplace Magenta 49 Market
4 StreetA Blue 24 Market
5 StreetA Red 45 Market
6 Period1 Magenta 49 Quarter
7 Period1 Yellow 24 Quarter
8 Period2 Blue 24 Quarter
9 Period3 Green 34 Quarter
10 Period3 Red 45 Quarterhttps://stackoverflow.com/questions/58489093
复制相似问题