R语言for循环求具有重复行标签的值的和

表格转换

如上图所示,进行R语言数据框变换 , 一个 数据框中第一列有相同元素a,如某一行为 (a 1 2) 还有一行为(a 3 4) 如何把两行后面元素相加合并成一行变成(a 4 6)

A B C
1 a 1 2
2 b 1 3
3 a 3 4
                                          v
                                          v
                                          v
A B C
1 a 4 6
2 B 1 3

我们可以利用R的plyr包来进行求和操作,但是这个函数只能一列一列的,所以引入了for循环

library(plyr)
#示例表
a<-data.frame("A"=c("a","b","a"),"B"=c(1,1,3),"C"=c(2,3,4))
#先求一列初始化
alldata<-aggregate(C ~ A,data=a,sum)
#重命名避免重复
colnames(alldata)[2]<-"test"
for (i in colnames(a)[2:length(colnames(a))]){
    #计算每列的和
    ter<-aggregate(a[,i]~A,data=a,sum)
    colnames(ter)[2]<-i  
    #合并列
    alldata<-merge(alldata,ter,by="A")
    }
alldata<-alldata[,-2]

你可能感兴趣的:(R语言for循环求具有重复行标签的值的和)