有关数据帧聚合的另一个初学者问题。
我想使用多个列的值聚合数据框中的多个列。是的,我以前看过类似的文章。但是我认为这里的区别是我试图基于多个列进行聚合。
例如我的数据框:
column1 column2 column3 V1 V2
A a 7 90 600
A a 7 90 600
A b 7 80 600
A b 6 70 5000
A b 6 70 5000
....
汇总并求和V1和V2中的数字:
column1 column2 column3 V1 V2
A a 7 180 1200
A b 7 80 600
A b 6 140 10000
....
这是我最小化的数据和代码:
#generate minimal sample data
column1 <- c("S104259","S2914138" ,"S999706","S1041120",
rep("S1042529",6), rep('S1235729',4))
column2 <- c(" T6-R190116","T2-R190213" ,"T8-R190118",
rep("T8-R190118",3), rep('T2-R190118',3),rep('T6-R200118',4),'T1-R200118')
column3 <- c(rep("3S_DMSO",7),rep("uns_DMSO",5),rep("3s_DMSO",2))
output_1 <- c(664,292,1158,574,38,0,2850,18,74,8,10,0,664,30)
output_2 <- c(364,34,0,74,8,0,850,8,7,8,310,0,64,380)
df <-data.frame(column1,column2,column3,output_1,output_2)
#aggregate data by the same value in column 1, 2 and 3
new_df <- aggregate(cbind(df$output_1,df$output_2), by=list(Category=df$column1), FUN=sum)
write.table(new_df, file = "aggregatedDMSO.txt",sep="\t", row.names = F, col.names = T)
所以
df[,all columns from a certain index]
,但是其他时候我可能需要省略几列)谢谢ML
我始终喜欢使用基本软件包和预装有R的软件包。但是在聚合方面,由于其灵活性,我更喜欢ddply方法。您可以使用平均值和sd或您选择的任何描述性进行汇总。
column1<-c("S104259","S2914138","S999706","S1041120",rep("S1042529",6),rep('S1235729',4))
column2<-c("T6-R190116","T2-R190213","T8-R190118",rep("T8-R190118",3),rep('T2-R190118',3),rep('T6-R200118',4),'T1-R200118')
column3<-c(rep("3S_DMSO",7),rep("uns_DMSO",5),rep("3s_DMSO",2))
output_1<-c(664,292,1158,574,38,0,2850,18,74,8,10,0,664,30)
output_2<-c(364,34,0,74,8,0,850,8,7,8,310,0,64,380)
df<-data.frame(column1,column2,column3,output_1,output_2)
library(plyr)
factornames<-c("column1","column2","column3")
plyr::ddply(df,factornames,plyr::numcolwise(mean,na.rm=TRUE))
plyr::ddply(df,factornames,plyr::numcolwise(sum,na.rm=TRUE))
plyr::ddply(df,factornames,plyr::numcolwise(sd,na.rm=TRUE))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句