【问题标题】:R: How to use summarize and do function together on grouped dataR:如何在分组数据上同时使用汇总和执行功能
【发布时间】:2018-04-04 10:03:40
【问题描述】:

在 tidyverse 中,summary 可用于具有单值函数的分组数据。例如

mtcars %>% group_by(cyl) %>% summarise(max(cos(mpg)))

如果函数是向量值的话,如果我没看错的话,推荐使用do。例如,do 命令适用于 phych 包中的向量值函数 'describe':

 library(psych)
 mtcars %>% group_by(cyl) %>% do(describe(.$mpg))

如何将单值函数和向量值函数同时应用于分组数据?例如,如何将 max(cos()) 和 describe() 都应用到 mpg 列,并将输出作为一个数据帧?

【问题讨论】:

    标签: r dplyr tidyverse


    【解决方案1】:

    我们可以将describe 的输出放在list 中的summarise 然后unnest

    library(tidyverse)
    mtcars %>% 
        group_by(cyl) %>%
        summarise(Cosmpg = max(cos(mpg)), list(describe(mpg))) %>%
        unnest
    # A tibble: 3 x 15
    #    cyl Cosmpg  vars     n  mean    sd median trimmed   mad   min   max range   skew kurtosis    se
    #  <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>    <dbl> <dbl>
    #1  4.00  0.743  1.00 11.0   26.7  4.51   26.0    26.4  6.52  21.4  33.9 12.5   0.259   -1.65  1.36 
    #2  6.00  0.939  1.00  7.00  19.7  1.45   19.7    19.7  1.93  17.8  21.4  3.60 -0.158   -1.91  0.549
    #3  8.00  0.989  1.00 14.0   15.1  2.56   15.2    15.2  1.56  10.4  19.2  8.80 -0.363   -0.566 0.684
    

    【讨论】:

    • 一如既往,@akrun 您的回答非常优雅!无需使用do,只需在summary中列出,然后unnest即可。
    猜你喜欢
    • 2017-05-31
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 2020-02-27
    • 2015-06-01
    • 1970-01-01
    相关资源
    最近更新 更多