有没有办法在R中使用列作为索引进行多重t检验? 我想通过索引x $ Cross到1F对x $可行性进行t测试。因此将1M,2M等与1F进行比较。我知道我可以单独做这个,但有没有办法循环或申请这个? 这是下面的数据
printsTable
答案 0 :(得分:2)
我们可以使用任何一组操作
library(data.table)
setDT(X)[, t.test(Viability)$p.value, by = Cross]
# Cross V1
#1: 1F 0.0001825647
#2: 1M 0.0031854465
#3: 2M 0.0011197313
#4: 3M 0.0001486875
#5: 4M 0.0019277856
#6: 5M 0.0005531744
我们可以pairwise.t.test
查看更新后的问题
res <- with(X, pairwise.t.test(Viability, Cross))
res$p.value
# 1F 1M 2M 3M 4M
# 1M 1.0000000 NA NA NA NA
# 2M 1.0000000 1 NA NA NA
# 3M 0.9260886 1 1 NA NA
# 4M 0.9260886 1 1 1 NA
# 5M 0.2501720 1 1 1 1
如果我们需要获得与个别比较相同的结果,我们必须更改p.adj
paired
,pool.sd
,pairwise.t.test
等
通过个人比较,
t.test(X$Viability[X$Cross=='1F'],
X$Viability[X$Cross=='1M'])$p.value
#[1] 0.2636938
使用pairwise.t.test
with(X, pairwise.t.test(Viability, Cross, p.adj='none',
paired=FALSE, pool.sd=FALSE))$p.value
# 1F 1M 2M 3M 4M
#1M 0.263693796 NA NA NA NA
#...
注意:仍然存在一些舍入差异(如果可以的话)