我是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来说很新,所以我确定我错过了一些基本的东西,但是如果没有循环就能解决这个问题。< / p>
答案 0 :(得分:3)
尝试使用基础R:
with(sub, tapply(Amount, Date, sum))
答案 1 :(得分:1)
您可以使用plyr库中的ddply:
require(plyr)
ddply(sum, .(Date), summarize, sum=sum(Amount))
答案 2 :(得分:1)
或
library(data.table)
setDT(sub)[, sum(Amount), by = Date]
答案 3 :(得分:0)
非常相似的dplyr
解决方案:
library(dplyr)
sub %>%
group_by(Date) %>%
summarize(sum=sum(Amount))