相比于网页工具,使用编程语言处理科研数据的一大优势,在于高度的定制化,以及批量处理数据的快捷性和高效性
对于批量处理数据的方法,之前使用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家族函数进行批量操作