首页 > 解决方案 > DESeq2 - 组织数据 - 计算列数多于元数据行的数据,删除数据集之间不匹配的 TCGA ID

问题描述

我正在使用来自 Broad firehose 的一些肺鳞状细胞癌数据使用 DESeq2 运行 DEA。我使用了 RNAseq 数据,计数数据的原始计数,我的元数据是从 CNV 上的 Broad firehose 数据生成的。这两个数据集通过 TCGA ID 相关联,每个数据集都包含匹配的 ID,但原始计数数据有几个“额外”的 TCGA ID,它们不匹配/不存在于元数据中。计数长度 = 552,元长度 = 501 我需要以相同的顺序获取元数据和原始计数数据,并让数据集包含匹配的 TCGA ID 并删除不匹配的 ID/样本。

我一直在尝试使用 match 和 %in% 来解决不同的方法,我可以识别原始计数数据与元数据不具有相同 TCGA ID 的位置,但无法绕开我的脑袋如何获取原始计数并删除与元数据中的样本不匹配的 ID/样本。

任何想法都将有助于如何匹配两个数据集并消除不匹配的行/列。

colnames(lusc_reads)
  [1] "TCGA-18-3406" "TCGA-18-3407" "TCGA-18-3408" "TCGA-18-3409" "TCGA-18-3410" 
rownames(lusc_meta)
  [1] "TCGA-60-2722" "TCGA-43-7657" "TCGA-58-A46N" "TCGA-NC-A5HL" "TCGA-63-A5MB"
match(colnames(lusc_reads), rownames(lusc_meta))
  [1] 318 265 114 372 353 150   8 287 215  57 199 268 239 179 164 249 383  17 274

标签: match

解决方案


假设 lusc_reads 和 lusc_meta 是数据帧,这应该有效:

samples_to_keep <- as.vector(rownames(lusc_meta))
lusc_reads_new <- lusc_reads[colnames(lusc_reads) %in% samples_to_keep]

以与元数据相同的顺序放置它们

lusc_reads_new <- lusc_reads_new[,match(samples_to_keep, colnames(lusc_reads_new))]

推荐阅读