【问题标题】:Descriptive statistics with `summarise_all` in dplyr and order of calculation/outputdplyr 中的“summarise_all”和计算/输出顺序的描述性统计
【发布时间】:2019-07-27 01:10:06
【问题描述】:

dplyr 计算描述性统计数据的功能非常棒,而且它非常灵活,非常有用。 我想知道是否可以自动更改计算顺序,因为现在它将每个函数应用于所有选定的变量,然后使用下一个函数进行。因此,输出列出了所有变量的最小值,然后是 25% 分位数,依此类推。我想知道是否可以连续显示每个变量的所有描述性统计数据。

library(data.table)
library(dplyr)
mtcars %>% 
  select(mpg, cyl, gear) %>% 
  group_by(gear) %>%
  summarise_all(.tbl = ., funs(min = min(.), 
                               q25 = quantile(., 0.25), 
                               median = median(.), 
                               q75 = quantile(., 0.75), 
                               max = max(.), 
                               mean = mean(.), 
                               sd = sd(.)), na.rm = TRUE) %>% 
  data.table(.)
# Output now
   gear mpg_min cyl_min mpg_q25 cyl_q25 mpg_median cyl_median mpg_q75 cyl_q75 mpg_max cyl_max mpg_mean cyl_mean   mpg_sd    cyl_sd
1:    3    10.4       4    14.5       8       15.5          8  18.400       8    21.5       8 16.10667 7.466667 3.371618 1.1872337
2:    4    17.8       4    21.0       4       22.8          4  28.075       6    33.9       6 24.53333 4.666667 5.276764 0.9847319
3:    5    15.0       4    15.8       4       19.7          6  26.000       8    30.4       8 21.38000 6.000000 6.658979 2.0000000

  # Desired Output - Excerpt
   gear mpg_min mpg_q25 mpg_median mpg_q75 mpg_max mpg_mean   mpg_sd cyl_min cyl_q25
1:    3    10.4    14.5       15.5  18.400    21.5 16.10667 3.371618       4       8
2:    4    17.8    21.0       22.8  28.075    33.9 24.53333 5.276764       4       4
3:    5    15.0    15.8       19.7  26.000    30.4 21.38000 6.658979       4       4

【问题讨论】:

  • 我不清楚你想要什么。也许还包括预期的输出。
  • 添加了所需的输出,基本上是列排序问题。
  • 刚找到这个,和我的问题很接近stackoverflow.com/questions/34067123/…
  • 为什么不使用dplyrdata.table 做所有事情?
  • @NelsonGon 最后的 data.table 调用只是为了显示原因,因为生成的 tibble 被截断了。

标签: r dplyr


【解决方案1】:

好的,可以进行一些小的调整,但我认为这很不错。我使函数的结果名称后缀按字母顺序排列,然后对除分组列之外的所有列进行排序。

mtcars %>% select(mpg, cyl, gear) %>% group_by(gear) %>%summarise_all(.tbl = ., funs(a_min = min(.)
                                                                                       , b_q25 = quantile(., 0.25) 
                                                                                       , c_median = median(.)
                                                                                       , d_q75 = quantile(., 0.75)
                                                                                       , e_max = max(.)
                                                                                       , f_mean = mean(.) 
                                                                                       , g_sd = sd(.)
), na.rm = TRUE) %>% select(gear, order(names(.)[-1])) 

【讨论】:

  • .tbl = . 中不需要 summarise_all
猜你喜欢
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多