首页 > 解决方案 > 如何使用 tidyverse 将 summarise() 函数分成几列?

问题描述

我正在为这个tidyverse包裹而苦苦挣扎。我正在使用mpgR 中的数据集来显示我面临的问题(如果关系不相关,请忽略,这只是为了解释我的问题)。

我想要做的是获得按制造商和年份分组的平均“displ”并且同时(这是我无法弄清楚的),每个燃料类型变量都有几列(即:柴油平均值一栏,汽油平均值一栏等)。

这是代码的第一部分,我是 R 新手,所以我真的不知道我需要添加什么......

mpg %>%
  group_by(manufacturer, year) %>%
  summarize(Mean. = mean(c(displ)))

# A tibble: 30 × 3
# Groups:   manufacturer [15]
   manufacturer  year Mean.
   <chr>        <int> <dbl>
 1 audi          1999  2.36
 2 audi          2008  2.73
 3 chevrolet     1999  4.97
 4 chevrolet     2008  5.12
 5 dodge         1999  4.32
 6 dodge         2008  4.42
 7 ford          1999  4.45
 8 ford          2008  4.66
 9 honda         1999  1.6 
10 honda         2008  1.85
# … with 20 more rows

任何帮助表示赞赏,谢谢。

标签: rdplyrsummarize

解决方案


或许,我们需要重塑成“宽”

library(dplyr)
library(tidyr)
mpg %>% 
   select(manufacturer, year, fl, displ) %>%
   pivot_wider(names_from = fl, values_from = displ, values_fn = mean)

-输出

# A tibble: 30 x 7
   manufacturer  year     p     r     e     d     c
   <chr>        <int> <dbl> <dbl> <dbl> <dbl> <dbl>
 1 audi          1999  2.36 NA    NA     NA    NA  
 2 audi          2008  2.73 NA    NA     NA    NA  
 3 chevrolet     2008  6.47  4.49  5.3   NA    NA  
 4 chevrolet     1999  5.7   4.22 NA      6.5  NA  
 5 dodge         1999 NA     4.32 NA     NA    NA  
 6 dodge         2008 NA     4.42  4.42  NA    NA  
 7 ford          1999 NA     4.45 NA     NA    NA  
 8 ford          2008  5.4   4.58 NA     NA    NA  
 9 honda         1999  1.6   1.6  NA     NA    NA  
10 honda         2008  2     1.8  NA     NA     1.8
# … with 20 more rows

推荐阅读