总R和

总R和,r,sum,aggregate,R,Sum,Aggregate,我正在写我的第一本书 作为一个新手,我遇到了一些麻烦,希望你能帮助我 我有这样一个数据框: > v1<-c(1,1,2,3,3,3,4) > v2<-c(13,5,15,1,2,7,4) > v3<-c(0,3,6,13,8,23,5) > v4<-c(26,25,11,2,8,1,0) > datos<-data.frame(v1,v2,v3,v4) > names(datos)<-c("Position","a1","a

我正在写我的第一本书 作为一个新手,我遇到了一些麻烦,希望你能帮助我

我有这样一个数据框:

> v1<-c(1,1,2,3,3,3,4)
> v2<-c(13,5,15,1,2,7,4)
> v3<-c(0,3,6,13,8,23,5)
> v4<-c(26,25,11,2,8,1,0)
> datos<-data.frame(v1,v2,v3,v4)
> names(datos)<-c("Position","a1","a2","a3")

> datos
  posicion a1 a2 a3
1        1 13  0 26
2        1  5  3 25
3        2 15  6 11
4        3  1 13  2
5        3  2  8  8
6        3  7 23  1
7        4  4  5  0
>v1 v2 v3 v4 datos名称(datos)datos
位置a1 a2 a3
1        1 13  0 26
2        1  5  3 25
3        2 15  6 11
4        3  1 13  2
5        3  2  8  8
6        3  7 23  1
7        4  4  5  0
我需要的是将
a1
a2
a3
中的数据相加(在我的实际情况中,从
a1
a51
),按
位置分组。我尝试使用函数
aggregate()
,但它只适用于平均数,不适用于求和,我不知道为什么


提前感谢

您需要告诉聚合函数使用sum,因为默认情况下,它会获取每个类别的平均值。例如:

aggregate(datos[,c("a1","a2","a3")], by=list(datos$Position), "sum")

这对于
plyr
库来说相当简单

library("plyr")
ddply(datos, .(Position), colwise(sum))
如果有其他不应求平均值的非数值列,可以使用

ddply(datos, .(Position), numcolwise(sum))

嗨,布莱恩,我已经做了一个证明,这似乎是我需要的。然而,我需要用我的真实数据检查一些事情。我会让你知道的。谢谢你的帮助!我检查过了,这正是我需要的。非常感谢你!
ag_df <-- aggregate(.~Position,data=datos,sum)
sumdf <- rowsum(datos,datos$Position,na.rm=T)
sumdf1 <- aggregate(cbind(a1,a3)~datos$Position,datos,sum)