计算p值等于或小于0.05的行数

时间:2015-08-30 14:32:31

标签: r data-analysis statistical-test

我是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))  皱眉图释,但这是不正确的

1 个答案:

答案 0 :(得分:1)

如果列名不是特定顺序,那么我们可以使用grep查找以A开头的列名称索引以及B

 ind1 <- grep('^A', colnames(ME))
 ind2 <- grep('^B', colnames(ME))

然后我们使用t.testapply

逐行执行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