对于100万数据的循环,需要花费大量时间。如何走出for循环
样本数据 动作广告名 aLoad对于100万数据的循环,需要花费大量时间。如何走出for循环,r,performance,for-loop,R,Performance,For Loop,样本数据 动作广告名 aLoad 观察Leanardo垂直连接水平 单击倾斜以垂直连接水平 aLoad 观察标签Vinet aLoad aLoad aLoad aLoad 克鲁尼注意到了这个标签 关上克鲁尼的标签 aLoad aLoad aLoad 观察Angad垂直克鲁尼水平 关闭Angad垂直Clooney水平 我需要通过比较我在Excel中实际使用的名称来为广告名称编号,以生成IF(Advertname3=Advertname2,Adblk2,Adblk2+1) 动作名称AdBlk 阿洛德
观察Leanardo垂直连接水平 单击倾斜以垂直连接水平 aLoad
观察标签Vinet aLoad
aLoad
aLoad
aLoad
克鲁尼注意到了这个标签 关上克鲁尼的标签 aLoad
aLoad
aLoad
观察Angad垂直克鲁尼水平 关闭Angad垂直Clooney水平 我需要通过比较我在Excel中实际使用的名称来为广告名称编号,以生成IF(Advertname3=Advertname2,Adblk2,Adblk2+1) 动作名称AdBlk 阿洛德1号 观察Leanardo垂直连接水平2 单击倾斜垂直连接水平2 阿洛德3号 观察标签Vineet 4 阿洛德5号 阿洛德5号 阿洛德5号 阿洛德5号 克鲁尼注意到了标签6 关上克鲁尼的标签6 阿洛德7号 阿洛德7号 阿洛德7号 观察Angad垂直克鲁尼水平8 关闭Angad垂直Clooney水平8 我正在处理大小超过一百万的点击流数据。我正在尝试创建基于广告编号的广告名称,以便进行排序,因为第二个没有及时记录
ID_Sort[1,24] <- 1
for(i in 2:nrow(ID_Sort))
{
if(ID_Sort[i,14] == ID_Sort[(i-1),14])
{
a <- ID_Sort[(i-1),24]
ID_Sort[i,24] <- a
}
else
{
a <- ID_Sort[(i-1),24]
ID_Sort[i,24] <- a+1
}
}
ID\u Sort[1,24]我不确定这是否符合您的要求,或者它是否比您的代码快,但我怀疑它可能是。尽管如下所示创建两个数据集副本可能效率很低
ID_Sort <- read.table(text='
a 1 10
b 1 10
c 2 20
d 2 20
e 3 30
f 3 30
', header=FALSE)
ID_Sort.c <- ID_Sort[-nrow(ID_Sort),2:3]
ID_Sort.b <- ID_Sort[-1 ,2:3]
V3 <- ifelse(ID_Sort.b$V2 == ID_Sort.c$V2, ID_Sort.c$V3, ID_Sort.c$V3+1)
ID_Sort$V3 <- c(1,V3)
ID_Sort
V1 V2 V3
1 a 1 1
2 b 1 10
3 c 2 11
4 d 2 20
5 e 3 21
6 f 3 30
ID\u排序你听说过break
吗?不,你能帮我了解一下吗,因为我是编程新手。我不知道r
如何制作一个可复制的小示例。您可以编辑原始问题以包含数据。一个可能加快代码速度的更改是删除定义a
的两行,并使用例如ID\u Sort[i,24]您好这不是我想要的示例数据已发布。@sandeep我建议您缩小示例数据的大小,并发布您想要的答案。这就是其他人所说的可复制示例的含义。我发布的答案是基于我对你想要什么的最佳猜测。如果你想让我改进答案,我需要更好地理解你想要的是什么。因此,张贴所需的答案。除非你这样做,否则我认为没有其他人会试图帮助你。