数据表中的循环对于大数据来说太慢了

时间:2016-02-16 23:48:42

标签: r loops for-loop data.table bigdata

我有一个问题 - 带有data.table的循环,但有点复杂。

VisitSources <- as.vector(DF$PVsource)


 for (i in 2:nrow(DF)) {

   if(DF[i,visitID]==DF[i-1,visitID]) {

    VisitSources[i]=VisitSources[i-1]

  }
 }
DF=cbind(DF,VisitSources)

它应该运行4百万行,所以时间很糟糕(3小时)。我绑了很多但似乎没有任何帮助。有人可以帮忙吗?这必须是data.table对象。

sth simmilar works fine i quickly:
DF[,channel := as.character(channel)][VisitSources=="google", channel := "Organic"]

的问候, 多罗塔

1 个答案:

答案 0 :(得分:4)

提出的问题真的很糟糕。我想你正在寻找:

DT[, VisitSources := PVsource[1], by = rleid(VisitID)]