2012-08-31 75 views
0

所以我有一個數據幀,與下面的數據說:問題與數據幀ddply的結果 - R的

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

我得到:

Count Amount Org   Bank 
------------------------------------------ 
     1  100  ABC  Chase 
     15  76  DEF American Express 
    ... 
    ... 

當我使用運行ddply與具有相同的值(即countamtresult1導致對所有行,即

description  count  amt 
    Chase    900  432087 
    American Express 900  432087 
..... 

這絕對不是這種情況。不知何故,似乎最後計算的sum()值將應用於所有行。我在這裏錯過了什麼嗎?

+2

你能做到'dput(頭(DF))'創建和發佈可重複的例子嗎? –

回答

7

這裏有幾個問題:

  1. 你流汗相同/錯誤的結果,因爲你是在參數指回到原來的數據幀df到ddply - 例如df[[1]]
    Ddply不能像那樣工作 - 直接使用列名稱,例如AmountCount

  2. 您錯過了ddply的.fun函數參數 - 在這種情況下summarize是合適的。
    (老實說,我不知道你的代碼是如何工作的根本沒有這個。)

  3. 您使用的是未公開的方式(4)選擇在.variable參數組列。改爲嘗試.(Bank)c("Bank")

這應該工作:

ddply(df, .(Bank), summarize, count = sum(as.numeric(Count)), 
           amt = sum(as.numeric(Amount))) 
+0

是否可以對'銀行'的值進行分組,忽略這種情況,即現在應用'ddply'時,結果將會有單獨的條目,用於說明'Chase'和'CHASE'。是否可以在'ddply'中將這些條目分組? –

+0

您應該轉換銀行標籤,使用(例如)'toupper' –