match - 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
解决方案
假设 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))]
推荐阅读
- node.js - 有没有办法控制我的对话流机器人听用户的时间?
- tableau-api - 为什么在 Tableau 中日期是 Dimension 而不是 Measure?
- marklogic - Marklogic Admin API 在创建森林时出现错误
- xamarin - 从 Xamarin Hybrid Web 视图打开签名板
- crystal-reports - 可在多组中显示的记录的选择方法
- mapkit - iOS 13 MapKit:MKMapItem.pointOfInterestCategory 为零?
- java - 将位图转换为字节数组不会产生预期的结果
- jira - 将任务从 backlog 添加到 sprint
- javascript - 使用过滤器仅返回键的特定属性
- python-3.x - “TypeError:count() 接受 0 个位置参数,但给出了 1 个”,代码有什么问题