美文网首页统计分析方法
批量处理——for循环批量计算组间差异

批量处理——for循环批量计算组间差异

作者: 生信小鹏 | 来源:发表于2021-08-22 11:57 被阅读0次

相比于网页工具,使用编程语言处理科研数据的一大优势,在于高度的定制化,以及批量处理数据的快捷性和高效性

对于批量处理数据的方法,之前使用for循环和apply语句进行处理过,但是不够系统,学习果子生信课程后有一个清晰的认识,写下来,一是可以调用方便,二是自己写过之后,才能算是完全掌握。

使用的数据是 R自带的骨髓瘤数据,在之前统计方法的选择帖子中也使用过。统计方法的选择(2)--参数检验

之所以先写for循环,主要原因在于,只要能完整地做完一件事情,把变量换成相应的通用表达式就能处理完。

那为什么不能只学习for循环呢?
R最大的局限就在于其耗内存,底层运算其实比较慢,相比于一些用C语言编写的语言,其速度会慢很多。处理量小的时候,无所谓,但是一旦数据量大,其运算速度不能满意。

目的:进行分组比较,并画图;生存分析,并画图

数据的准备

rm(list = ls())

library(survminer)
data("myeloma")
head(myeloma)[1:3,1:11]

colnames(myeloma)

data = myeloma

查看数据


数据概况

有基因表达量数据,有分子分组,有生存信息

进行分组比较(操作一个项目)

#首先创建一个
test_data = data.frame()
# 一个基因怎么做
dd <- kruskal.test(data[,7] ~ molecular_group, data = data)
p.value <- dd$p.value
statistic <- dd$statistic[[1]]
test_data["CRIM1" ,1] <- p.value
test_data["CRIM1" ,2] <- statistic

这样得到的是一个基因的比较结果。关于统计分析相关的选择,可参考统计方法的选择(2)--参数检验统计方法的选择(3)--非参数检验

进行分组比较(批量操作)

有了一个基因的比较方法,那么利用for循环顺利成章地做完循环。

for (i in colnames(data)[6:11]) {
  print(i)
  dd <- kruskal.test(data[,i] ~ molecular_group, data = data)
  p.value <- dd$p.value
  statistic <- dd$statistic[[1]]
  test_data[i ,1] <- p.value
  test_data[i ,2] <- statistic 
}

colnames(test_data) <- c('p.value', 'statistic')

只需要确定变量循环的内容就可以,得到结果


结果

有p值,有统计量,根据这些可以进行相应的筛选。

因为只作为一个例子,所以选取的数据集很小,便于操作。

后续:使用apply家族函数进行批量操作

相关文章

网友评论

    本文标题:批量处理——for循环批量计算组间差异

    本文链接:https://www.haomeiwen.com/subject/rbmciltx.html