【发布时间】:2020-05-03 19:32:26
【问题描述】:
我按照here 中的说明创建一个干净的汇总统计表。
在这些指令中,summary_table() 函数的输入是一个列表列表,如下所示:
our_summary1 <-
list("Miles Per Gallon" =
list("min" = ~ min(.data$mpg),
"max" = ~ max(.data$mpg),
"mean (sd)" = ~ qwraps2::mean_sd(.data$mpg)),
"Displacement" =
list("min" = ~ min(.data$disp),
"median" = ~ median(.data$disp),
"max" = ~ max(.data$disp),
"mean (sd)" = ~ qwraps2::mean_sd(.data$disp)),
"Weight (1000 lbs)" =
list("min" = ~ min(.data$wt),
"max" = ~ max(.data$wt),
"mean (sd)" = ~ qwraps2::mean_sd(.data$wt)),
"Forward Gears" =
list("Three" = ~ qwraps2::n_perc0(.data$gear == 3),
"Four" = ~ qwraps2::n_perc0(.data$gear == 4),
"Five" = ~ qwraps2::n_perc0(.data$gear == 5))
)
我的数据集中有 48 个变量,每个变量都有自己的列。有没有一种更简洁的方法可以让我循环浏览我的数据框中的所有列来创建一个像上面那样的对象,而无需像这样手动输入它?理想情况下,我更喜欢使用 tidyverse 的解决方案。
我正在考虑做的一件事是将我的数据更改为长格式,然后使用 group_by() 按原始数据中的每一列进行分组,然后使用 summarise()。但是,我的理解是,这将产生一个列表,而不是像 summary_table() 所必需的列表列表。
如果创建汇总表的方法与我在这里尝试的方法完全不同,请告诉我。这个看起来是我正在考虑的最整洁的选项。对于每个变量,我希望能够重命名它并包括最小值、最大值、平均值和标准差。
【问题讨论】:
-
不会
mtcars %>% summarise_at(vars(mpg, disp, wt), list(min = ~ min(.), max = ~ max(.),mean (sd)` = ~mean_sd(.)))` 得到汇总输出
标签: r dplyr apply tidyverse summary