首页 > 解决方案 > 使用管道汇总多列数据

问题描述

我希望使用简洁的小标题中的管道报告数据集中某些列( price、、agedist)的最小值、最大值和平均值。houses现在,我有以下代码,它使用 1x9 tibble 产生了一个相当不雅的解决方案:

houses %>% 
  select(price, age, dist) %>%
  summarize_each(list(min = min, max = max, mean = mean))

我希望使用管道创建一个更有条理的解决方案,将所选数据作为行,将汇总统计信息(最小值、最大值、平均值)作为列,从而产生 3x3 小标题。有任何想法吗?

标签: r

解决方案


您可以先获取长格式数据,然后计算每列的汇总统计信息。这是一个mtcars数据集的例子。

library(dplyr)
library(tidyr)

mtcars %>% 
  select(mpg, disp, cyl) %>%
  pivot_longer(cols = everything()) %>%
  group_by(name) %>%
  summarise(min = min(value, na.rm = TRUE), 
            max = max(value, na.rm = TRUE), 
            mean = mean(value, na.rm = TRUE))

#  name    min   max   mean
#  <chr> <dbl> <dbl>  <dbl>
#1 cyl     4     8     6.19
#2 disp   71.1 472   231.  
#3 mpg    10.4  33.9  20.1 

推荐阅读