代码之家  ›  专栏  ›  技术社区  ›  Kevin

对大数据帧中的观测值进行重新编号

  •  1
  • Kevin  · 技术社区  · 10 年前

    我正在处理一个包含超过500000个观察值的数据帧,我第一次处理代码优化。我有一个非常简单的问题,这让我无法按时完成任务,我正在寻找一个更快的解决方案。

    我的数据帧“d”有一列观察数字,从1:nrow(d)开始。由于这里不重要的原因,需要以特定的方式重新编号观察结果。我有另一个数据帧,名为“id”,在第1列中观察值1的编号错误,而在第2列中的编号正确。这些列分别命名为“错误”和“正确”。

    我尝试重新编号的方法是使用循环:

    for(i in 1:nrow(d)){
      d$obs[i] <- id$right[id$wrong==d$obs[i]]
    }
    

    正如我所说,这非常缓慢。有什么更聪明的方法吗?

    1 回复  |  直到 10 年前
        1
  •  0
  •   Jthorpe    10 年前

    这将更快:

     d$obs <- id$right[match(d$obs,id$wrong)]