我在R中有data.frame
,包含数百列。我需要检查每列是否与所有其他列明显不同。我正在查看aov()
函数,但我不知道如何指定模型以及如何以有效的方式为每个列执行此操作。如果有人有任何想法,那就太好了。
答案 0 :(得分:1)
根据this post中的建议使用pairwise.t.test
,我们可以识别所有比较都有p <= 0.05
的 p 表的行。
例如:
# dummy data
set.seed(1)
J <- 10 # number of groups
n <- 50 # number of obs per group
m <- mapply(rnorm, n, rnorm(J))
d <- data.frame(y=c(m), x=factor(rep(seq_len(ncol(m)), each=nrow(m))))
plot(jitter(as.numeric(d$x)), d$y, pch=20, xlab='Group', ylab='Value')
p <- cbind(rbind('1'=NA, pairwise.t.test(d$y, d$x)$p.value), NA)
p[upper.tri(p)] <- t(p)[upper.tri(t(p))] # add values to upper triangle
rowSums(p <= 0.05, na.rm=TRUE) == J - 1
# 1 2 3 4 5 6 7 8 9 10
# FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
如果所有其他组具有显着(在α= 0.05处)不同的平均值,则最终向量的元素是TRUE
。 pairwise.t.test
的默认p调整方法为holm
- 有关可用方法,请参阅p.adjust.methods
。