【发布时间】:2023-12-28 01:26:01
【问题描述】:
我想为存储在不同长度的不同数据帧中的最小/最大经度和纬度值的特定范围内的经度和纬度值分配一个段 ID。我的数据如下所示: 带有观察的数据框:
head(obs)
longitude latitude
52.06264 6.412816
52.06097 6.413106
51.06097 6.413346
54.06097 6.413276
51.06089 6.413114
52.05444 6.413094
具有范围和段 ID 的数据框:
head(seg)
segment lon_max lon_min lat_max lat_min
01a 6.857822 6.857476 51.05837 51.03489
01b 6.858979 6.857834 51.03433 50.99901
01c 6.860019 6.858982 51.99836 51.96330
01d 6.860960 6.860050 51.96277 51.92718
01e 6.862294 6.860979 51.92657 51.89125
01f 6.863179 6.862301 51.89059 51.85562
对于每个观察点,我想知道它属于哪个“细分”,所以理想情况下我会得到这样的结果:
longitude latitude segment
52.03464 6.458816 1a
52.05667 6.416606 1a
51.06097 6.446346 1b
54.03757 6.413276 1c
51.06089 6.422114 1b
52.34243 6.413094 1a
我曾尝试仅使用纬度来执行此操作,但由于向量的长度不同,我收到一条错误消息。
obs[['segment']] <- for (i in obs$latitude) {
if (i>=seg$lat_min & i<=seg$lat_max) {
obs$segment=seg$segment
} else {
obs$segment='NA'}
}
Error in `$<-.data.frame`(`*tmp*`, "segment", value = 1:118) :
replacement has 118 rows, data has 10284
我知道为什么这行不通,因为它不能逐行匹配,但我不知道该怎么做。如何将每对纬度和经度与最小/最大值逐行匹配,直到找到它适合的范围并分配正确的 segment_ID?
提前致谢!
【问题讨论】:
-
我认为您的
longitude和latitude列在obs或seg中混淆了
标签: r