在data.table中将Nuclei和Cell行合并在一起

时间:2015-09-29 03:57:19

标签: r merge data.table

我有一个由细胞核和细胞组成的数据集。

某些色谱柱对细胞核或细胞而言是独一无二的,而某些色谱柱则有两个读数

ParentType ObjectType ObjectID ParentID Area CytoplasmArea Dye1Intensity
WholeCell  Nuclei     1        1        10   NA            500
Well       WholeCell  1        1        100  90            NA
WholeCell  Nuclei     2        2        20   NA            550
Well       WholeCell  2        1        120  100           NA

我想以这样的方式合并数据行,即我只有核数据及其相应的整个单元数据表示为新列。

相应的含义 Nuclei的ParentID必须与WholeCell的ObjectID 相匹配。这表明细胞核属于这种细胞。

现在,我希望在一个原子核应该只属于一个父母的情况下保持简单

结果应该是这样的:

ParentType ObjectType ObjectID ParentID ObjectArea ParentArea ParentCytoplasmArea ObjectDye1Intensity
WholeCell  Nuclei     1        1        10         100        90                  500
WholeCell  Nuclei     2        2        20         120        100                 550

我能想到的一个想法是将数据集分别分成Nuclei和WholeCells数据,更改两个数据集的列名,并在数据上的每个核上使用for循环来获得我想要的但我理解数据框和数据表有很多有用的功能,如合并,连接或聚合,以高效的方式完成这项任务。

有人可以推荐我一个更好的方法吗?

我的开始代码:

dt <- data.table(ParentType=c("WholeCell","Well","WholeCell","Well"),ObjectType=c("Nuclei","WholeCell","Nuclei","WholeCell"),ObjectID=c(1,1,2,2),ParentID=c(1,1,2,1),Area=c(10,100,20,120),CytoplasmArea=c(NA,90,NA,100),Dye1Intensity=c(500,NA,550,NA))
Nuclei = dt[which(dt$ObjectType=="Nuclei"),]
Cells =  dt[which(dt$ObjectType=="WholeCell"),]
setnames(Nuclei,names(Nuclei),paste0("Object", names(Nuclei)))
setnames(Cells,names(Cells),paste0("Parent", names(Cells)))     

0 个答案:

没有答案