首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对大数据集自动执行Mann Whitney U测试

对大数据集自动执行Mann Whitney U测试
EN

Stack Overflow用户
提问于 2019-05-17 02:03:05
回答 1查看 93关注 0票数 0

我是R newby,如果这个问题对你们这些人来说太微不足道了,我提前道歉,但我完全糊涂了。

在尝试学习R时,我发现自己面临着创建重复循环来逐个执行Mann Whitney U测试组1与组2的多个变量的问题。下面是一个例子。(https://i.redd.it/2c0429k4y3y21.png)

尽管我可以一个接一个地执行测试,从A到Z,但在我测试的真实数据中,我有超过10000个变量,因此我必须找到一种方法来1)自动化测试;2)生成一个包含所有结果p值的文件。

有没有人能帮我完成这项任务?我非常愿意花更多的时间来学习如何用R编写代码,但我需要在这方面做一点小小的推动。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-05-17 03:17:15

因为您提供的数据只有一个因子级别,所以我添加了三个“Wildtype”来使代码工作。

代码语言:javascript
复制
gen <- structure(list(genotype=structure(c(1L, 1L, 1L, 1L, 1L, 1L),
    .Label=c("Mutant", "Wildtype"), class="factor"), X312=c(0, 0, 9.927911044,
    7.604660497, 0, 8.469434699), X1.Sep=c(9.296165425, 7.994991396, 10.3226941,
    10.59396298, 10.2554214, 7.963356173), X2.Sep=c(12.0207487, 10.92364072,
    11.22504751, 11.2077482, 11.91886469, 11.64801165), X1.Dec=c(0L, 0L, 0L, 0L, 0L,
    0L), X128up=c(8.051389852, 8.437100325, 2.9382856, 9.05631996, 0, 8.993819702),
    X140up=c(7.859521468, 7.638131579, 0, 8.567090791, 8.7672994, 10.219634)),
    row.names=c(NA, 6L), class="data.frame")


gen[1:3, 1] <- factor(rep(2, 3), label="Wildtype")

因为我们可以对一列执行Mann Whitney U测试,如下所示:

代码语言:javascript
复制
# for column 6
wilcox.test(gen[gen$genotype == "Mutant", 6], 
            gen[gen$genotype == "Wildtype", 6], exact=FALSE)$p.val

我们可以通过简单地循环遍历列索引(不包括第一个),使用sapply()对所有列执行它,如下所示:

代码语言:javascript
复制
sapply(2:ncol(gen), 
  function(x) {
      wilcox.test(gen[gen$genotype == "Mutant", x], 
                  gen[gen$genotype == "Wildtype", x], exact=FALSE)$p.val
  }
)
# [1] 1.00000 1.00000 1.00000     NaN 0.66252 0.08085
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56174245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档