根据另一个字符列(R)中的分类数据,使用聚合来对数值变量求和

时间:2014-01-13 15:10:13

标签: r sum aggregate

我在这里列出了类似的问题,但没有一个能够为我工作。我在数据框中列出了二进制数据,我想根据另一个变量进行聚合。例如。

Data.frame (A & B are columns)
A   B   
1   23
0   7
0   23
0   7
1   4 

我已经尝试了以下(找到平均值时有效)并收到以下错误消息:

aggregate( A~B, data.frame, sum)

Error in FUN(X[[1L]], ...) : invalid 'type' (character) of argument

理想情况下,我想要一个输出23 = 1,7 = 0,4 = 1

有人可以帮我吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

许多方法可以做到这一点,但首先要做的是:

library(plyr)
foo <- data.frame(A = c(1, 0, 0, 0, 1),
                  B = c(23, 7, 23, 7, 4))

ddply(foo, .(B), summarise, sum = sum(A))

给出:

> ddply(foo, .(B), summarise, sum = sum(A))
   B sum
1  4   1
2  7   0
3 23   1
> 

答案 1 :(得分:0)

你究竟打电话给我什么?您str的{​​{1}}是什么?

data.frame

给出

mdf <- data.frame( A = c(1,0,0,0,1), B = c(23, 7 ,23, 7,4)
aggregate( A ~ B, mdf, sum )

修改

因此,如果您的问题是,您的列 B A 1 4 1 2 7 0 3 23 1 不是数字,您可以通过

解决此问题
A