我正在尝试使用dplyr::the ()和dplyr::in ()来获得带有行和列中变量的几个汇总统计信息的tibble。我只能通过使用dplyr::bind_rows()实现这一结果,但我想知道是否有一种更优雅的方法来获得相同的输出。
> library(tidyverse)
── Attaching packages ────────────────────────────────────────────── tidyverse 1.3.1 ──
✔ ggplot2 3.3.3 ✔ purrr 0.3.4
✔ tibble 3.1.1 ✔ dplyr 1.0.6
✔ tidyr 1.1.3 ✔ stringr 1.4.0
✔ readr 1.4.0 ✔ forcats 0.5.1
── Conflicts ───────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
>
> bind_rows(min = summarize(starwars, across(where(is.numeric), min,
+ na.rm = TRUE)),
+ median = summarize(starwars, across(where(is.numeric), median,
+ na.rm = TRUE)),
+ mean = summarize(starwars, across(where(is.numeric), mean, na.rm = TRUE)),
+ max = summarize(starwars, across(where(is.numeric), max, na.rm = TRUE)),
+ sd = summarize(starwars, across(where(is.numeric), sd, na.rm = TRUE)),
+ .id = "statistic")
# A tibble: 5 x 4
statistic height mass birth_year
<chr> <dbl> <dbl> <dbl>
1 min 66 15 8
2 median 180 79 52
3 mean 174. 97.3 87.6
4 max 264 1358 896
5 sd 34.8 169. 155. 为什么不能直接做总结呢?似乎比使用一个函数列表更优雅,正如共线小体所建议的。这是否违反了整洁数据框架的原则?(在我看来,把一堆数据帧放在一起看上去不那么整齐。)
发布于 2021-05-18 16:08:10
您可以使用gtsummary来总结数据。下面是数值列的子集(尽管gtsummary处理许多不同的数据类型)。然后,我告诉类型参数将我的摘要统计数据放在不同的行上,最后告诉我想要显示的汇总参数。
library(tidyverse)
library(gtsummary)
starwars[sapply(starwars, is.numeric)] %>%
tbl_summary(type = all_continuous() ~ "continuous2",
statistic = all_continuous() ~ c("{median} ({p25}, {p75})",
"{min}, {max}",
"{mean},{sd}"))https://stackoverflow.com/questions/67589798
复制相似问题