按照列筛选数据框不容易那么按照行就容易吗

前面我出过一个考题,是对GEO数据集的样本临床信息,根据列进行筛选,比如:

rm(list=ls())
options(stringsAsFactors = F)
library(GEOquery)
eset=getGEO('GSE102349',getGPL = F)
pd=pData(eset[[1]])

就会下载一个表达矩阵,有113个病人(行),记录了57个临床信息(列),很明显,有一些临床信息列是后续的数据分析里面(主要是分组)没有意义的,病人总共时间日期,所有的病人可能都是一样的。

那么就需要去除,一个简单的按照列进行循环判断即可!

pd=pd[,apply(pd,2,function(x){
 length(unique(x))>1
})]

但是,仔细看临床信息表格会发现,还是有问题:

就是仍然是需要去除无效行,就是去掉临床信息为N/A、Unknown、Not evaluated的行,需要检查全部的列哦~

给一个参考答案

pd=pd[apply(
 apply(pd,2,function(x){
 grepl('N/A',x)
}),1,sum)==0,]

Comments are closed.