我是R编程的新手。我正面临着解决这个问题的问题:
数据集:
set.seed(897)
ME <- matrix(rnorm(24000),nrow=1000)
colnames(ME) <- c(paste("A",1:12,sep=""),paste("B",1:12,sep=""))
使用apply()计算ME中每一行的统计检验。您想询问A组和B组是来自同一人群还是来自具有不同手段的人群。您可以假设数据是正态分布的。 计算p值等于或小于0.05的行数。
我试过了
>P<- apply(ME , 1 , function(ME){ t.test(ME[1:1000])$p.value })
> length(which(P <= 0.05))
皱眉图释,但这是不正确的
答案 0 :(得分:1)
如果列名不是特定顺序,那么我们可以使用grep
查找以A
开头的列名称索引以及B
。
ind1 <- grep('^A', colnames(ME))
ind2 <- grep('^B', colnames(ME))
然后我们使用t.test
和apply
MARGIN=1
行
pval <- apply(ME, 1, FUN=function(x) t.test(x[ind1], x[ind2])$p.value)
head(pval)
#[1] 0.4987050 0.0303736 0.7143174 0.2955703 0.5082427 0.2109010
我们通过与0.05
比较获得逻辑指数 v1 <- pval <= 0.05
获取sum
值的TRUE
,以查找p.value
小于0.05的行数
sum(v1)
#[1] 55