R-从管道操作员运行t检验



是否可以从piping运算符运行t.test
我试图找到答案,但是有关此主题的大多数问题都在同一数据集上进行许多测试。
我看上去是一个broom软件包,但似乎很适合阅读结果。
我感兴趣的是是否可以仅使用piping并在输出上运行t.test()
例如,这是一些示例数据

library(dplyr)
d <- data.frame(
  group = sample(LETTERS[1:2], size = 10, replace = T),
  amount = sample(1:3, size = 10, replace = T)
  )

如果我使用base R运行t.test,我会得到结果:

t.test(d$amount~d$group, var.equal = T)
> d
   group amount
1      A      2
2      A      2
3      B      1
4      B      3
5      A      2
6      B      1
7      B      2
8      A      1
9      B      3
10     A      3

但是,如果我尝试使用 piping,我会得到错误:

d %>% t.test(amount~group, var.equal = T)
Error: is.atomic(x) is not TRUE
In addition: Warning messages:
1: In is.na(y) :
  is.na() applied to non-(list or vector) of type 'language'
2: In mean.default(x) : argument is not numeric or logical: returning NA
3: In var(x) : NAs introduced by coercion
4: In mean.default(y) : argument is not numeric or logical: returning NA

我需要做一些其他操作吗?

我们可以将其放在summarise中,作为list

d %>%
  summarise(ttest = list(t.test(amount ~ group, var.equal = TRUE))) 

,如果我们只需要提取PVALUE,则可以完成

d %>% 
  summarise(pval = t.test(amount ~ group, var.equal = TRUE)$p.value)

,或者我们可以将其放置在{}中,然后进行t.test

d %>%
     {t.test(.$amount ~ .$group, var.equal = TRUE)}

或不带括号,通过为公式方法指定data

d %>%
     t.test(amount ~ group, data = ., var.equal = TRUE)

编辑:基于 @hpesoj626的注释

'rstatix'一个软件包完全处理管道内的基本统计测试

https://cran.r-project.org/web/packages/rstatix/rstatix.pdf

rstatix提供了诸如t.test((或cohensd((之类的功能的包装器,从而可以将其与管道操作员一起使用。按照您的要求执行t检验,只需使用t.test((的包装器,t_test((:

d %>% t_test(amount ~ group, var.equal = T)

最新更新