gpt4 book ai didi

r - dplyr 使用 t.test 汇总多个列

转载 作者:行者123 更新时间:2023-12-03 13:56:17 26 4
gpt4 key购买 nike

是否有可能以某种方式对同一个分类变量的多个变量进行 t.test,而无需按如下方式对数据集进行 reshape ?

data(mtcars)
library(dplyr)
library(tidyr)
j <- mtcars %>% gather(var, val, disp:qsec)
t <- j %>% group_by(var) %>% do(te = t.test(val ~ vs, data = .))

t %>% summarise(p = te$p.value)

我试过使用

mtcars %>% summarise_each_(funs = (t.test(. ~ vs))$p.value, vars = disp:qsec)



但它会引发错误。

奖励: t %>% summarise(p = te$p.value)还包括分组变量的名称?

最佳答案

在与@aosmith 和@Misha 进行了所有讨论之后,这是一种方法。正如@aosmith 在他/她的评论中所写,您想要执行以下操作。

mtcars %>%
summarise_each(funs(t.test(.[vs == 0], .[vs == 1])$p.value), vars = disp:qsec)

# vars1 vars2 vars3 vars4 vars5
#1 2.476526e-06 1.819806e-06 0.01285342 0.0007281397 3.522404e-06

vs 为 0 或 1(组)。如果您想在变量(例如 dips)中的两组之间运行 t 检验,您似乎需要按照@aosmith 的建议对数据进行子集化。我想说谢谢你的贡献。

我最初的建议适用于另一种情况,您只需比较两列。这是示例数据和代码。
foo <- data.frame(country = "Iceland",
year = 2014,
id = 1:30,
A = sample.int(1e5, 30, replace = TRUE),
B = sample.int(1e5, 30, replace = TRUE),
C = sample.int(1e5, 30, replace = TRUE),
stringsAsFactors = FALSE)

如果您想对 A-C 和 B-C 组合运行 t 检验,以下是一种方法。
foo2 <- foo %>%
summarise_each(funs(t.test(., C, pair = TRUE)$p.value), vars = A:B)

names(foo2) <- colnames(foo[4:5])

# A B
#1 0.2937979 0.5316822

关于r - dplyr 使用 t.test 汇总多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26244321/

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