【发布时间】:2020-01-26 14:54:34
【问题描述】:
我想计算某些列(存储在向量中的名称)的平均值,同时对列进行分组。这是一个可重现的示例:
Cities <- c("London","New_York")
df <- data.frame(Grade = c(rep("Bad",2),rep("Average",4),rep("Good",4)),
London = seq(1,10,1),
New_York = seq(11,20,1),
Shanghai = seq(21,30,1))
> df
Grade London New_York Shanghai
1 Bad 1 11 21
2 Bad 2 12 22
3 Average 3 13 23
4 Average 4 14 24
5 Average 5 15 25
6 Average 6 16 26
7 Good 7 17 27
8 Good 8 18 28
9 Good 9 19 29
10 Good 10 20 30
我想要的输出:
> df %>% group_by(Grade) %>% summarise(London = mean(London), New_York = mean(New_York))
# A tibble: 3 x 3
Grade London New_York
<fct> <dbl> <dbl>
1 Average 4.5 14.5
2 Bad 1.5 11.5
3 Good 8.5 18.5
我想在summarise 中选择向量cities 中的元素(不调用它们的名字),同时在向量中保留它们的原始名称
【问题讨论】:
-
请注意,如果您有一个城市列可以简化代码,这将使分析更容易(您只需要按向量上的城市进行过滤,然后进行汇总。
-
您的意思是将所有值合并到一列中,然后为城市添加另一列吗?所以一共有 3 列?
-
是的,您可能需要来自 tidyr 的 pivot_longer