gpt4 book ai didi

R - 运行管道运算符(operator)的 t 检验

转载 作者:行者123 更新时间:2023-12-04 09:33:16 25 4
gpt4 key购买 nike

是否可以运行 t.test来自 piping运营商?
我试图找到这个问题的答案,但围绕这个主题的大多数问题都着眼于在同一数据集上进行许多测试。
我看过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)
)

如果我运行 t.test使用 base R ,我得到了结果:
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 的评论

关于R - 运行管道运算符(operator)的 t 检验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50036411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com