我有一个问题 - 带有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"]
的问候, 多罗塔
答案 0 :(得分:4)
提出的问题真的很糟糕。我想你正在寻找:
DT[, VisitSources := PVsource[1], by = rleid(VisitID)]