在大数据框中重新编号观察
re-number observations in a large data frame
我正在处理一个包含超过 500,000 个观察值的数据框,而且我是第一次处理代码优化。我有一个非常简单的问题,让我按时丧命,正在寻找更快的解决方案。
我的数据框 "d" 有一个观察值列,仅来自 1:nrow(d)。由于此处不重要的原因,需要以特定方式对观察结果重新编号。我有另一个数据框,称为 "id",第 1 列中的观察值 1 的编号错误,而第 2 列中的编号正确。这些列分别命名为 "wrong" 和 "right" .
我尝试重新编号的方法是循环:
for(i in 1:nrow(d)){
d$obs[i] <- id$right[id$wrong==d$obs[i]]
}
就像我说的,这太慢了。有更聪明的方法吗?
这样会更快:
d$obs <- id$right[match(d$obs,id$wrong)]
我正在处理一个包含超过 500,000 个观察值的数据框,而且我是第一次处理代码优化。我有一个非常简单的问题,让我按时丧命,正在寻找更快的解决方案。
我的数据框 "d" 有一个观察值列,仅来自 1:nrow(d)。由于此处不重要的原因,需要以特定方式对观察结果重新编号。我有另一个数据框,称为 "id",第 1 列中的观察值 1 的编号错误,而第 2 列中的编号正确。这些列分别命名为 "wrong" 和 "right" .
我尝试重新编号的方法是循环:
for(i in 1:nrow(d)){
d$obs[i] <- id$right[id$wrong==d$obs[i]]
}
就像我说的,这太慢了。有更聪明的方法吗?
这样会更快:
d$obs <- id$right[match(d$obs,id$wrong)]