聚合R总和
我正在写我的第一篇 R 程序,作为一个新手,我遇到了一些麻烦,希望你能帮助我。
我有一个像这样的数据框:
> 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
我需要的是对 a1
、a2
和 a3
中的数据求和(在我的实际情况中)从 a1
到 a51
)按位置
分组。我正在尝试使用函数aggregate()
,但它只适用于均值,不适用于求和,我不知道为什么。
提前致谢
I'm writting my first
program in R and as a newbie I'm having some troubles, hope you can help me.
I've got a data frame like this:
> 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
What I need is to sum the data in a1
, a2
and a3
(in my real case from a1
to a51
) grouped by Position
. I'm trying with the function aggregate()
but it only works for means, not for sums and I don't know why.
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要告诉聚合函数使用 sum,因为默认情况下它会获取每个类别的平均值。例如:
You need to tell the aggregate function to use sum, as the default is for it to get the mean of each category. For example:
对于
plyr
库来说,这相当简单。如果您有不应平均的其他非数字列,您可以使用
This is fairly straightforward with the
plyr
library.If you have additional non-numeric columns that shouldn't be averaged, you can use
应该给你一个数据框,其中包含每个位置的“a”值的总和。这里的技巧是公式中的 . 表示公式中所有“非分组”变量的列表。
请注意,您可以获得与以下内容大致相同的结果:
除了还包括位置总和!
如果您不想聚合所有非组列,则可以使用 cbind,如下所示:
仅对 a1 和 a3 列求和。
should give you a data frame containing the sums of the "a" values for each of the positions. The trick here is the . in the formula represents a list of all the "non-grouping" variables in the formula.
Note that you can get much the same result with:
Except that includes the sums of the positions as well!
If you DON'T want all non-group columns aggregated, you can use cbind as in:
That sums only the a1 and a3 columns.