繁体   English   中英

在 R 中用均值、中值、范围和定量进行总结

[英]summarise with mean, median, range and quants in R

我目前正在使用 R 中的 palmer penguins 数据集,并希望汇总按性别分组的均值、中位数、范围和数量组合的数据。

我当前的解决方案将量化数据从汇总数据中分离出来。 有没有办法在一个 go 中做到这一点。如果没有,我该如何组合数据集。 quant 组目前是长格式,我不确定如何组合它们。

group_summary <- penguins %>% group_by(sex) %>% summarize(mean = mean(bill_length_mm, 
na.rm = TRUE), meadian = median(bill_length_mm, na.rm = TRUE), range = 
max(bill_length_mm, na.rm = TRUE) - min(bill_length_mm, na.rm = TRUE))

group_quant <- penguins %>% group_by(sex) %>% summarize(quantile(bill_length_mm, 
probs =seq(.1, 1, by = .1), na.rm =TRUE, .groups = 'drop'))

我有以下解决方案,但它从 Sex 中删除了 NA 值,我不确定为什么。

group_summary <- do.call(data.frame,aggregate(bill_length_mm ~ sex, penguins, 
function(x) c(mean = mean(x, na.rm = TRUE), median = median(x, na.rm = TRUE), range = 
max(x, na.rm = TRUE) - min(x, na.rm = TRUE), quantile(x, probs = seq(.1, 1, by = .1), 
na.rm = TRUE, .groups = 'drop'))))

您可以将分位数保存在列表中,然后使用unnest_wider从中创建新列。 为了计算range ,我使用了diff(range(...))而不是max(...) - min(...) 他们两个都很好,但我把它包括在内是为了展示一个替代方案。

library(palmerpenguins)
library(dplyr)
library(tidyr)

penguins %>% 
  group_by(sex) %>% 
  summarize(mean = mean(bill_length_mm, na.rm = TRUE), 
            median = median(bill_length_mm, na.rm = TRUE), 
            range = diff(range(bill_length_mm, na.rm = TRUE)), 
            quantile = list(quantile(bill_length_mm, probs = seq(.1, 1, by = .1), na.rm = TRUE))) %>%
  unnest_wider(quantile)

#   sex     mean median range `10%` `20%` `30%` `40%` `50%` `60%` `70%` `80%` `90%` `100%`
#  <fct>  <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
#1 female  42.1   42.8  25.9  35.8  36.7  38.2  40    42.8  45.1  45.7  46.5  47.5   58  
#2 male    45.9   46.8  25    38.8  40.5  41.3  43.2  46.8  49.0  50.0  50.8  51.9   59.6
#3 NA      41.3   42    13.2  36.8  37.7  37.8  38.6  42    44    44.5  45.2  46.4   47.3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM