r - R 通过子集和添加两列改进代码
问题描述
我需要一些帮助来改进我的部分代码(我是初学者)。我有一个大数据库(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]
}
提前感谢您帮助我!
解决方案
假设数据集是数据框,这应该有效:
flussi_coord$LongMag <- coord_oba[match(flussi_coord[,5], oba),1]
flussi_coord$LatMag <- coord_oba[match(flussi_coord[,5], oba),2]
推荐阅读
- node.js - 部署 node-react 应用程序时出现 Heroku 错误
- python - 我怎样才能看到时钟还剩多少时间?
- flutter - Flutter RefreshIndicator 在只有一页时不起作用
- python - 将日期转换为格式 %d%m%y Python
- c++ - * 和 & 的使用?
- javascript - 如何使用 React 动态删除组件
- java - 通过搜索child / Spring boot JPA + PostgresSQL找到父元素
- android - 没有得到预期的意图输出
- r - 使用 R 从 bernoulli(p) 生成样本
- azure-devops - 在运行时在 azure devops 管道中定义列表变量