所以我有一个数据框,比如下面的数据:
Count Amount Org Bank
------------------------------------------
1 100 ABC Chase
15 76 DEF American Express
...
...
当我使用
运行ddply
时
result1 <- ddply(df, 4, count = sum(as.numeric(df[[1]])), amt = sum(as.numeric(df[[2]])))
我得到的结果result1
对所有行都有相同的值(即count
和amt
),即
description count amt
Chase 900 432087
American Express 900 432087
.....
绝对不是这样的。不知何故,似乎计算的最后一个sum()
值应用于所有行。我在这里错过了什么吗?
答案 0 :(得分:7)
这里有一些问题:
您收到相同/错误的结果,因为您在ddply的参数中引用了原始数据框df
- 例如df[[1]]
。
Ddply不能那样工作 - 直接使用列名,例如Amount
和Count
。
您缺少ddply的.fun
函数参数 - 在这种情况下summarize
是合适的。
(老实说,如果没有这个,我根本不知道你的代码是如何工作的。)
您正在使用未记录的方式(4
)在.variable
参数中选择组列。请改为.(Bank)
或c("Bank")
。
这应该有效:
ddply(df, .(Bank), summarize, count = sum(as.numeric(Count)),
amt = sum(as.numeric(Amount)))