2014-09-04 73 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]