【发布时间】:2019-05-23 11:15:39
【问题描述】:
我有两个数据框 - 一个包含一组分配给它们的邮政编码和调查 (df1),另一个包含所有可能的邮政编码和包含这些邮政编码的区域 (df2)。我基本上需要删除邮政编码,并将每个调查分配到一个区域(使用邮政编码进行交叉引用)。目前我估计我的程序需要 5 小时。我怎样才能加快速度?
for (i in 1:nrows(df1)) {
index <- which(df2$postcodes == toString(df1$postcodes[i])
if (length(index)) {
df1$zone <- toString(df2[index])
} else {
df1$zone <- 'UNMATCHED'
}
}
目前,我发现运行 100 个邮政编码大约需要 6 秒。
在过去的几个小时里,我尝试了很多事情,但几乎没有进展,所以任何帮助都将不胜感激!
【问题讨论】:
-
您是否熟悉任何软件包,例如 dplyr 或 data.table 或者更喜欢 base R?如果您以可复制的格式(可以复制到 R 会话中)发布
df1和df2的示例,那也很棒 -
听起来像是对(左)连接的默认使用...阅读:stackoverflow.com/questions/1299871/…
标签: r performance for-loop