【问题标题】:How to use dplyr to perform descriptives and a chi-square test within function如何使用 dplyr 在函数内执行描述性和卡方检验
【发布时间】:2018-03-08 20:39:29
【问题描述】:

我的问题 [here][1] 有一个类似的问题,但只要 dplyr 改变它做事的方式,我相信我的问题是原创的,可以帮助其他人。

首先,我尝试在函数内部,报告描述性统计数据并运行一些统计推断测试,例如卡方。

这种语法效果很好:

> desc_chi <- function(group_var) {   group_var <- enquo(group_var)   j
> <- dataset %>% 
>     group_by(!!group_var) %>% 
>     summarise(n = n())   print(j) } 
desc_chi(GENDER)

但是当我添加卡方检验时,它会停止并报告错误:

desc_chi <- function(group_var) {
  group_var <- enquo(group_var) 
  j <- dataset %>% 
    group_by(!!group_var) %>% 
    summarise(n = n(),
      pvalue=chisq.test(.$LOCATION, .$group_var))
  print(j)
}

pvalue 的长度必须为 1(汇总值),而不是 9

感谢您一直以来提供的所有支持。

【问题讨论】:

    标签: r dplyr chi-squared


    【解决方案1】:

    这个怎么样?

     desc_chi <- function(dataset, group_var) {   
      group_var <- enquo(group_var)   
      dataset %>% 
          group_by(!!group_var) %>% 
          summarise(n = n()) %>% 
          mutate(chisq_pval = chisq.test(n)$p.value)   
     } 
    
    
    mtcars %>% 
         desc_chi(cyl)
    
    
    # A tibble: 3 x 3
        cyl     n chisq_pval
       <dbl> <int>      <dbl>
    1  4.00    11      0.315
    2  6.00     7      0.315
    3  8.00    14      0.315
    

    【讨论】:

    • 谢谢@adam-black,我花了一上午的时间才得到这个结果,你解决了问题!!!
    • 很高兴能帮上忙!
    • 是否可以将此代码更改为 chisq.test(variable1, group_var) 之类的代码?这个 group_var 是由一个函数定义的!再次感谢
    • 喜欢这个?测试
    • 您可以简单地使用count(!!group_var) 而不是分组和汇总。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多