【问题标题】:Use function over groups or factors with dplyr通过 dplyr 对组或因子使用函数
【发布时间】:2020-11-06 08:59:25
【问题描述】:

我想使用一个函数,例如shapiro.test() 数据集中的多个组。

第一次尝试

library(tidyverse)
library(magrittr)

mtcars %>% group_by(cyl) %$% shapiro.test(wt)$p.value
#> [1] 0.09265499

但这并没有像我预期的那样遍历组。 然后我尝试了一个将结果作为数据框输出的函数,因为这是 Stack Overflow 上另一个问题所采用的方法。

checkNorm <- function(x) {
  return(data.frame(P = shapiro.test(x)$p.value))
}

mtcars %>% group_by(cyl) %$% checkNorm(wt)
#>            P
#> 1 0.09265499

使函数遍历group_by() 传递的组的适当方法是什么?

【问题讨论】:

    标签: r dplyr purrr magrittr


    【解决方案1】:

    创建一个新列来存储每个组的 p 值:

    library(dplyr)
    
    mtcars %>% 
      group_by(cyl) %>%
      summarise(p_val = shapiro.test(wt)$p.value)
    
    #   cyl   p_val
    #  <dbl>   <dbl>
    #1     4 0.570  
    #2     6 0.131  
    #3     8 0.00275
    

    【讨论】:

    • 我完全忘记了summarise(),这正是我想要的!谢谢你提醒我。
    猜你喜欢
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    相关资源
    最近更新 更多