2014-09-04 67 views
1

我對R非常陌生,並且正在使用來自我運行的網站的付款詳細信息數據集。我有一個數據框,其中包括以下列:找到獨特日期的總和

¦ Date ¦ Amount ¦ Type 

每行是一個單獨的支付金額不同。我想找到一種方法,無需循環25,000次付款,即可查找數據集中每天的總付款金額。

我已經試過sum(sub$Amount[sub$Date == unique(sub$Date)])但引發以下錯誤:

Warning message: 
In sub$Date == unique(sub$Date) : 
    longer object length is not a multiple of shorter object length 

正如我所說的,我很新的R,所以我敢肯定,我失去了一些基本的東西,但不能弄清楚如何在沒有循環的情況下做到這一點。

+0

輸出dput(head(sub))後得到更好的幫助。 – rnso 2014-09-04 11:27:33

回答

3

嘗試使用基礎R:

with(sub, tapply(Amount, Date, sum)) 
+0

完美!謝謝! – Dan 2014-09-04 23:57:33

1

可以ddply使用來自plyr庫:

require(plyr) 
ddply(sum, .(Date), summarize, sum=sum(Amount)) 
0

非常相似dplyr解決方案:

library(dplyr) 
sub %>% 
    group_by(Date) %>% 
    summarize(sum=sum(Amount)) 
1

或者

library(data.table) 
setDT(sub)[, sum(Amount), by = Date]