繁体   English   中英

t测试将一行(参考样本)与数据框中的所有其他行进行比较

[英]t test comparing one row (reference sample) to all other rows in the data frame

我在下面的数据集(数据集)中有一个子集。 它总结了用不同药物处理细胞后的细胞活力(实际数据集中有1200种药物)。 实验一式三份(样品1、2和3)进行。 为了简单起见,我在下面生成了一个小的数据集:

             sample_01        sample02         sample03
untreated    100                120                110
drug1         50                 49                48
drug2         90                 87               80
drug3          40                43               42

我想在测试中比较未使用我使用的每种药物的细胞生存力值。

我尝试使用for循环,但没有成功:

for (i in 1:nrow(dataset)) {
   x = dataset["untreated",]
   y = dataset[i,]
   result<-t.test(x,y)
}

这是您帖子中的数据集示例:

dataset <- data.frame(sample_01=c(100,50,90,40),
                      sample_02=c(120,49,87,43),
                      sample_02=c(110,48,80,42)
                      )
rownames(dataset) <- c("untreated", "drug1", "drug2", "drug3")

您的循环看起来不错,只需进行两个修改:

首先,您应该从2开始而不是从1开始循环,因为您不想将第一行与其自身进行比较(未经处理)。

第二,您应该将结果存储在列表中,而不要覆盖一个名为“ results”的变量,因为这样您每次在循环中都将对其进行重写,最后只得到最后一行的答案。

修改如下:

results <- list()
for (i in 2:nrow(dataset)) {
  x <- dataset["untreated",]
  y <- dataset[i,]
  results[[i-1]] <- t.test(x,y)
}

现在您可以获取p值:

> sapply(results, getElement, "p.value")
[1] 0.008337497 0.033407617 0.006107201

另外,为了使事情变得容易,您可以考虑使用软件包:

library(matrixTests)
> row_t_welch(dataset[-1,], dataset["untreated",])
      obs.x obs.y obs.tot   mean.x mean.y mean.diff     var.x var.y   stderr       df  statistic      pvalue  conf.low  conf.high alternative mean.null conf.level
drug1     3     3       6 49.00000    110 -61.00000  1.000000   100 5.802298 2.039996 -10.513075 0.008337497 -85.50204 -36.497961   two.sided         0       0.95
drug2     3     3       6 85.66667    110 -24.33333 26.333333   100 6.489307 2.985027  -3.749758 0.033407617 -45.04393  -3.622734   two.sided         0       0.95
drug3     3     3       6 41.66667    110 -68.33333  2.333333   100 5.840472 2.093283 -11.699968 0.006107201 -92.41964 -44.247023   two.sided         0       0.95

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM