【发布时间】:2020-02-05 22:13:25
【问题描述】:
我需要一些帮助来改进我的部分代码(我是初学者)。 我有一个大数据库(flussi_coord),其中有一列包含不同地区的名称。每个区域都与一个仓库相关联,我需要将两列及其坐标添加到flussi_coord;这些包含在另一个称为 coord_oba 的矩阵中。 oba 只是一个区域列表,使用级别(flussi_coord$oba)创建。
我想出的解决方案可行,但速度非常慢。对于flussi_coord的每一行,我检查是否与oba中的名称有对应关系;如果为真,我将仓库的经度和纬度粘贴到两个向量中,稍后将它们添加到flussi_coord。
for (k in 1:dim(flussi_coord)[1]) {
for (i in 1:length(oba)) {
if (flussi_coord[k,5] == oba[i]) {
LongMag[k] <- coord_oba[i,1]
LatMag[k] <- coord_oba[i,2]
}
}
}
flussi_coord <- cbind(flussi_coord, LongMag, LatMag)
我知道我需要以某种方式过滤数据库,选择与某个区域匹配的行,添加两列并迭代其他区域。我试图寻找类似的解决方案,但我无法运行代码。
#this doesn't work
for (i in 1:length(oba)) {
flussi_coord[which(flussi_coord$OBA == oba[i]), ]$Longititudine_magazzino <- coord_oba[i,1]
flussi_coord[which(flussi_coord$OBA == oba[i]), ]$Latitudine_magazzino <- coord_oba[i,2]
}
提前感谢您帮助我!
【问题讨论】:
-
您能否制作一个可重现的示例,我们可以轻松运行?例如通过发布
dput(flussi_coord[1:10,])的输出 -
您应该为此使用
merge。我不知道您的列名,所以这是不完整的,但类似于merge(flussi_coord, cbind(oba, coord_oba))。 (coord_oba是从哪里来的?和oba的顺序一样吗?) -
非常感谢大家,问题解决了:)