0

所以我有一个数据框,比如以下数据:

    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()正在计算的最后一个值应用于所有行。我在这里错过了什么吗?

4

1 回答 1

7

这里有几个问题:

  1. 您正在得到相同/错误的结果,因为您在 ddply 的参数中引用了原始数据df框 - 例如df[[1]]
    Ddply 不能那样工作 - 直接使用列名,例如Amountand Count

  2. 您缺少.funddply 的函数参数 - 在这种情况下summarize是合适的。
    (老实说,如果没有这个,我根本不知道你的代码是如何工作的。)

  3. 您正在使用未记录的方式 ( 4) 来选择参数中的组列.variable。尝试.(Bank)c("Bank")代替。

这应该有效:

ddply(df, .(Bank), summarize, count = sum(as.numeric(Count)),
                              amt = sum(as.numeric(Amount)))
于 2012-08-31T21:25:42.730 回答