引言
我最近在做TCGA数据分析,在处理中遇到的问题及其收获。主要包括:
case ID 大小写处理
数据的匹配
涉及到的函数有:
小写
- tolower
大写
- toupper
单一的局部匹配
- grep
多个全局匹配
- match
保留固定长度的字符
- substr
大小写处理
在RANseqGene中case ID 为大写的,而Clincial中为小写的。需要对case ID 做转换。
方案一:大写变小写
tolower(colnames(LUAD_RNAseqGene))
方案二:小写变大写
toupper(rownames(LUAD_Clinical))
匹配
grep
在找tumor 的case ID 时,需要采用这个函数将所有的tumor 找出来。
grep("\\.01A",colnames(LUAD_RNAseqGene))
对于normal的查找类似处理。
substr
由于case ID 很长,我们只需要前面的12或16个字符来作为识别验证。
substr(colnames(LUAD_Clinical),1,12) # 保留12位
match
RNA中映射到Clinical中,采用这个函数
例子
#定义a
> a<-c(1,2,3,4)
#定义b
> b<-c(3,4,5,6,7)
#匹配
> match(a,b)
[1] NA NA 1 2
#a和b*同的元素
> a[-which(is.na(match(a,b)))]
[1] 3 4
#a和b*同的元素
> b[match(a,b)]
[1] NA NA 3 4
#a中有的元素而不在b中
> a[is.na(match(a,b))]
[1] 1 2
注:match的结果长度与a保持一致,NA表示该位置元素不在b中,非NA表示该元素在b中的位置。