数据框上的ddply结果问题 - R.

nam*_*ked 0 r plyr

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

    Count    Amount    Org         Bank
------------------------------------------
      1        100      ABC       Chase
      15        76       DEF    American Express
    ...
    ...
Run Code Online (Sandbox Code Playgroud)

当我运行ddply使用时:

result1 <- ddply(df, 4, count = sum(as.numeric(df[[1]])), amt = sum(as.numeric(df[[2]])))
Run Code Online (Sandbox Code Playgroud)

我得到的结果result1是对所有行具有相同的值(即countamt),即

 description      count        amt
  Chase             900        432087
  American Express  900        432087
.....
Run Code Online (Sandbox Code Playgroud)

绝对不是这样的.不知何故,似乎sum()计算的最后一个值应用于所有行.我在这里错过了什么吗?

Ale*_*own 7

这里有一些问题:

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

  2. 你缺少.funddply 的函数参数 - 在这种情况下summarize是合适的.
    (老实说,如果没有这个,你的代码根本就不会有用.)

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

这应该工作:

ddply(df, .(Bank), summarize, count = sum(as.numeric(Count)),
                              amt = sum(as.numeric(Amount)))
Run Code Online (Sandbox Code Playgroud)