【问题标题】:loop in data table is too slow for big data数据表中的循环对于大数据来说太慢了
【发布时间】:2016-05-28 11:35:31
【问题描述】:

我有一个问题 - 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)

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

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

问候, 多罗塔

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

  • 为什么要倾盆大雨?这就是我拥有的所有代码。这需要几个小时。我只是想把它改得更快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 2011-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
  • 2019-08-04
相关资源
最近更新 更多