表格转换
如上图所示,进行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]








网友评论