私は非常に大きなデータフレームを持っており、私の目標はユーザー ID ごとに累積 USD をリストすることです。データフレームは次のようになりますが、はるかに大きくなります。
dt<-sample(seq(as.Date("2013-01-01"),as.Date("2013-05-01"),by="days"),10)
s<-c(rep(5252525,5),rep(1313131,5))
usd<-round(rnorm(10,100),2)
money<-data.frame(dt,s,usd)
money<-money[order(money$dt),]
money$Cumulative<-NA
users<-unique(money$s)
for ループから始めましたが、非常に遅かったです。
for (i in 1:length(users)){
temp=which(money$s==users[i])
money$Cumulative[temp]=cumsum(money$usd[temp])
}
data.table を使用して全体的な速度を向上させることができることを StackOverflow で読みましたが、これは多少役に立ちました。
money<-data.table(money)
setkey(money,s)
for (i in 1:length(users)){
temp=which(money$s==users[i])
money$Cumulative[temp]=cumsum(money$usd[temp])
}
この計算をもっと速くしたい。次に何をすべきですか?