【发布时间】:2013-07-26 14:39:07
【问题描述】:
我有一个非常大的数据框,我的目标是按用户 ID 列出累积的美元。数据框看起来像这样,但要大得多:
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])
}
我在 StackOverflow 上读到我可以使用 data.table 来提高整体速度,这在一定程度上有所帮助:
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])
}
我想让这个计算更快。接下来我该怎么做?
【问题讨论】:
标签: r performance for-loop data.table