我在这里的数据集在概念上与该问题中的数据集相似:R数据帧中的分层索引,但与此无关:R:根据数据框另一列中的不同信息组合列
我想根据另一个数据帧中列的元数据信息,对表中的列进行合并(或重新组合),方法是对它们进行汇总。
这是我的数据集的一个例子
organisms x1 x2 x3 x4 y1 y2 y3 y4
cat 1 1 5 0 1 0 1 3
dog 2 2 4 0 2 3 0 1
mouse 3 0 3 2 3 2 1 0
bird 4 3 2 1 2 7 2 0
这就是我想展示它的一种方式
organisms Extreme NotExtreme
cat 7 5
dog 8 6
mouse 8 6
bird 10 11
或作为
organisms XLow XHigh YLow YHigh
cat 6 1 2 2
dog 6 2 2 4
mouse 6 2 4 2
bird 6 4 4 7
这是加载我的数据集的代码
metadata <- data.frame(sample = c("x1","x2","x3","x4","y1","y2","y3","y4"), treatment = c(rep("Xtreme",4),rep("NotExtreme",4)),dosage=c(rep(c("Xlow","Xhigh"),2),rep(c("Ylow","YHigh"),2)))
mydata <- data.frame(x1 = c(1,2,3,4), x2 = c(1,2,0,3), x3=c(5,4,3,2),x4=c(0,0,2,1),y1=c(1,2,3,2),y2=c(0,3,2,7),y3=c(1,0,1,2),y4=c(3,1,0,0))
rownames(mydata)<- c("cat","dog","mouse","bird")
是否有一个简单的一两个衬垫解决方案,或者我必须为此编写一个函数?我研究了melt函数和dplyr软件包,但这不是我想要的,因为我的数据已经包含在两个单独的data.frames中。这是与列相关的操作。
R数据帧中的分层索引问题在某种程度上类似于我的,但是我对数据进行了重新表示,而不是将分层结构保留在同一数据帧中。但是列之间的层次关系仍然存在。
任何对如何采用优雅解决方案的见解将不胜感激。
可能有一种更优雅的方法,但是您可以通过基于元数据df中的值列表进行子设置,然后对这些行值求和来实现此目的...
Exdf<-data.frame(Extreme=rowSums(mydata[,(colnames(mydata) %in% subset(metadata, treatment=="Xtreme")$sample==T)]),
NotExtreme=rowSums(mydata[,(colnames(mydata) %in% subset(metadata, treatment=="NotExtreme")$sample==T)]))
LH<-data.frame(XLow=rowSums(mydata[,(colnames(mydata) %in% subset(metadata, dosage=="Xlow")$sample==T)]),
XHigh=rowSums(mydata[,(colnames(mydata) %in% subset(metadata, dosage=="Xhigh")$sample==T)]),
YLow=rowSums(mydata[,(colnames(mydata) %in% subset(metadata, dosage=="Ylow")$sample==T)]),
YHigh=rowSums(mydata[,(colnames(mydata) %in% subset(metadata, dosage=="Yhigh")$sample==T)]))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句