Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于100万数据的循环,需要花费大量时间。如何走出for循环_R_Performance_For Loop - Fatal编程技术网

对于100万数据的循环,需要花费大量时间。如何走出for循环

对于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 阿洛德

样本数据 动作广告名 aLoad
观察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我建议您缩小示例数据的大小,并发布您想要的答案。这就是其他人所说的可复制示例的含义。我发布的答案是基于我对你想要什么的最佳猜测。如果你想让我改进答案,我需要更好地理解你想要的是什么。因此,张贴所需的答案。除非你这样做,否则我认为没有其他人会试图帮助你。