我有一个由细胞核和细胞组成的数据集。
某些色谱柱对细胞核或细胞而言是独一无二的,而某些色谱柱则有两个读数
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)))