我想分析从Broad Firehose下载的TCGA(癌症基因组图谱)数据中的基因表达。我已经下载了结直肠癌(COAD)基因表达数据。数据是329个变量的20531个观测值的数据帧(命名数据)。这些行是单个基因,每个样品的标准化读数。标头或列名是TCGA示例代码。示例代码如下:
TCGA-3L-AA1B-01A-11R-A37K-07
当我将表格上传到R时,它变成了
TCGA.3L.AA1B.01A.11R.A37K.07
我想做的是抽取样本,其中第四件事是01
。因此,例如,对于上面的列标题,第四件事是01A
,重要的是它是01
,表明它是原发性肿瘤。如何提取列标题第四行为01
的所有列?
谢谢!
head(data)
Hybridization.REF TCGA.3L.AA1B.01A.11R.A37K.07 TCGA.4N.A93T.01A.11R.A37K.07
1 ?|100130426 0.5174 0
2 ?|100133144 18.0851 4.4315
3 ?|100134869 15.764 4.2767
TCGA.4T.AA8H.01A.11R.A41B.07 TCGA.5M.AAT4.01A.11R.A41B.07 TCGA.5M.AAT5.01A.21R.A41B.07
1 0 0 0
2 9.8995 7.9174 12.2565
3 11.3032 18.7608 20.8826
TCGA.5M.AAT6.01A.11R.A41B.07 TCGA.5M.AATA.01A.31R.A41B.07 TCGA.5M.AATE.01A.11R.A41B.07
1 0 0 0
2 3.9637 7.2366 11.629
3 15.0672 11.4513 6.906
答案 0 :(得分:0)
通常的方法是用.
在strsplit
处拆分列名,并检查第4个分量是否等于'01'
。由于.
是一个特殊字符,因此您必须使用\\.
。可能是这样的:
df[sapply(strsplit(colnames(df), '\\.'), '[', 4) == '01']