将列从其他数据框合并到SummarizedExperiment

时间:2018-10-17 11:21:59

标签: r dataframe bioconductor

我有一个SummarizedExperiment,看起来像这样:

class: RangedSummarizedExperiment dim: 483731 485 metadata(4): creationDate author BBMRIomicsVersion note assays(1): data rownames(483731): cg01707559 cg02004872 ... ch.22.47579720R ch.22.48274842R rowData names(10): addressA addressB ... probeEnd probeTarget colnames(485): 200397860027_R01C01 200397860027_R02C02 ... 200556930046_R03C01 200556930046_R06C02 colData names(946): STUDY_NUMBER SampleID ... Basename ID

我有一个看起来像这样的数据框:

STUDY_NUMBER UPID Testosterone Estradiol SHBG Sex 1 UPID01 NA NA NA male 3 UPID02 NA NA NA male 3 UPID03 10.02 62 49.6 male 4 UPID04 NA NA NA male 5 UPID05 NA NA NA female

我想基于STUDY_NUMBER合并此表(n行= 3662)。因此,我使用了以下代码:

colData(aems450k1.MvaluesQCIMPplaqueSE) <- merge(colData(aems450k1.MvaluesQCIMPplaqueSE), AEDB_Q1_20180223_sex, by.x = "STUDY_NUMBER", by.y = "STUDY_NUMBER", all.x = TRUE)

这将导致以下SummarizedExperiment对象:

class: RangedSummarizedExperiment dim: 483731 485 metadata(4): creationDate author BBMRIomicsVersion note assays(1): data rownames(483731): cg01707559 cg02004872 ... ch.22.47579720R ch.22.48274842R rowData names(10): addressA addressB ... probeEnd probeTarget colnames: NULL colData names(952): STUDY_NUMBER SampleID ... Sex T_E2

您将注意到colnames现在为NULL。因此,我的问题是:

如何防止这种情况发生?

我的第二个问题:

是否会发生这种情况,因为两个数据帧的顺序(基于STUDY_NUMBER)不相同?

非常感谢,

桑德

1 个答案:

答案 0 :(得分:0)

我相信我找到了答案,另请参见:https://support.bioconductor.org/p/114113/#114117

我认为问题在于colDataAssay数据的顺序不同,这不应该发生。但是,如果我sort =到merge命令,一切都很好,以后可以添加名称。所以:

dim(aems450k1.MvaluesQCIMPplaqueSE) aems450k1.MvaluesQCIMPplaqueSE colData(aems450k1.MvaluesQCIMPplaqueSE) <- merge(colData(aems450k1.MvaluesQCIMPplaqueSE), AEDB_Q1_20180223_sex, by = "STUDY_NUMBER", sort = FALSE) colnames(aems450k1.MvaluesQCIMPplaqueSE) <- aems450k1.MvaluesQCIMPplaqueSE$ID dim(aems450k1.MvaluesQCIMPplaqueSE)

结果为:

class: RangedSummarizedExperiment dim: 483731 485 metadata(4): creationDate author BBMRIomicsVersion note assays(1): data rownames(483731): cg01707559 cg02004872 ... ch.22.47579720R ch.22.48274842R rowData names(10): addressA addressB ... probeEnd probeTarget colnames(485): 8918692001_R01C01 8918692001_R02C01 ... 9221198166_R06C01 9221198166_R06C02 colData names(946): STUDY_NUMBER SampleID ... Basename ID

colnames中哪个顺序正确。没有sort =时,别名的顺序类似于colnames(485): 9221198166_R06C02 9221198166_R06C01 ... 8918692001_R02C01 8918692001_R01C01

这有意义吗?

相关问题