【问题标题】:Reshape results of summarize all efficiently [duplicate]有效地重塑所有总结的结果[重复]
【发布时间】:2018-09-18 10:30:56
【问题描述】:

作为我探索性工作的一部分,我构建了一个函数,为我的数据集中的每个字段提供各种指标。我想将它应用到我的数据集的每一列。

library(tidyverse)
mtcars  %>%summarise_all(., .funs = funs(mean, median, sd, max, min, n_distinct))

但是,这会导致数据集有 1 行,每个函数/列组合为一列。这些名称也像“column_function”一样连接起来。

期望的结果将是一个“整洁”的格式,例如:

ORIGINAL_COLUMN_NAME |功能 |结果

我猜一定有一种简单的方法可以做到这一点?

【问题讨论】:

  • 请注意,在现有答案中,变量名用下划线分隔,这将导致变量n_distinct 出现问题。一种解决方案:在摘要后重命名包含n_distinct 的列。

标签: r group-by dplyr tidyverse


【解决方案1】:

这是一种选择。

library(tidyverse)

mtcars %>%
  gather(Original_Column, Value) %>%
  group_by(Original_Column) %>%
  summarise_all(., .funs = funs(mean, median, sd, max, min, n_distinct)) %>%
  gather(Function, Result, -Original_Column)

# # A tibble: 66 x 3
#    Original_Column Function  Result
#    <chr>           <chr>      <dbl>
#  1 am              mean       0.406
#  2 carb            mean       2.81 
#  3 cyl             mean       6.19 
#  4 disp            mean     231.   
#  5 drat            mean       3.60 
#  6 gear            mean       3.69 
#  7 hp              mean     147.   
#  8 mpg             mean      20.1  
#  9 qsec            mean      17.8  
# 10 vs              mean       0.438
# # ... with 56 more rows

【讨论】:

    猜你喜欢
    • 2020-05-31
    • 2013-03-21
    • 2021-01-21
    • 2016-10-15
    • 2023-04-08
    • 2018-02-07
    • 2017-09-01
    • 2016-04-10
    • 2020-11-07
    相关资源
    最近更新 更多