如何将两列(纬度/经度)中的数据与其他两列中的最接近值进行匹配?

汤玛士

我有一个已知的经/纬度坐标列表,我需要在经/纬度网格内定位这些坐标,并提取相邻的数据。我已知的经/纬度坐标位于以下数据框中:

LatLong <- structure(list(Lat_orig = c(-55.417, -55.417, -55.417, -55.417, 
-55.417), Long_orig = c(-69.58, -69.249, -69.0831, -69.417, -69.749
), Lat_new = c(NA, NA, NA, NA, NA), Long_new = c(NA, NA, NA, 
NA, NA), Jan = c(NA, NA, NA, NA, NA), Feb = c(NA, NA, NA, NA, 
NA), Mar = c(NA, NA, NA, NA, NA), Apr = c(NA, NA, NA, NA, NA), 
May = c(NA, NA, NA, NA, NA), Jun = c(NA, NA, NA, NA, NA), 
Jul = c(NA, NA, NA, NA, NA), Aug = c(NA, NA, NA, NA, NA), 
Sep = c(NA, NA, NA, NA, NA), Oct = c(NA, NA, NA, NA, NA), 
Nov = c(NA, NA, NA, NA, NA), Dec = c(NA, NA, NA, NA, NA)), .Names = c("Lat_orig", 
"Long_orig", "Lat_grid", "Long_grid", "Jan", "Feb", "Mar", "Apr", 
"May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"), class = "data.frame", row.names = c(NA, 
-5L))



    Lat_orig    Long_orig   Lat_grid    Long_grid   Jan Feb Mar Apr May  Jun    Jul Aug Sep Oct Nov Dec
-55.417 -69.5800    NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
-55.417 -69.2490    NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
-55.417 -69.0831    NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
-55.417 -69.4170    NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
-55.417 -69.7490    NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA

我有第二个数据框,其中包含网格化的全局数据集。它很大,但这是一小块:

Grid <- structure(list(lat = c(-55.417, -55.417, -55.417, -55.417, -55.417
), long = c(-69.75, -69.583, -69.417, -69.25, -69.083), jan = c(8.5, 
8.5, 8.4, 8.7, 8.8), feb = c(8.4, 8.5, 8.3, 8.6, 8.8), mar = c(7.3, 
7.3, 7.2, 7.5, 7.6), apr = c(5.8, 5.8, 5.7, 5.9, 6), may = c(4, 
3.9, 3.7, 4, 4), jun = c(2.7, 2.7, 2.4, 2.7, 2.7), jul = c(2.2, 
2.2, 2, 2.2, 2.3), aug = c(2.6, 2.6, 2.4, 2.7, 2.8), sep = c(3.8, 
3.9, 3.7, 4, 4.1), oct = c(5.5, 5.5, 5.3, 5.7, 5.8), nov = c(6.6, 
6.7, 6.5, 6.9, 7), dec = c(7.9, 7.9, 7.7, 8.1, 8.2)), .Names = c("lat", 
"long", "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", 
"sep", "oct", "nov", "dec"), class = "data.frame", row.names = c(NA, 
-5L))



    lat long    jan feb mar apr may jun jul aug sep oct nov dec
-55.417 -69.750 8.5 8.4 7.3 5.8 4.0 2.7 2.2 2.6 3.8 5.5 6.6 7.9
-55.417 -69.583 8.5 8.5 7.3 5.8 3.9 2.7 2.2 2.6 3.9 5.5 6.7 7.9
-55.417 -69.417 8.4 8.3 7.2 5.7 3.7 2.4 2.0 2.4 3.7 5.3 6.5 7.7
-55.417 -69.250 8.7 8.6 7.5 5.9 4.0 2.7 2.2 2.7 4.0 5.7 6.9 8.1
-55.417 -69.083 8.8 8.8 7.6 6.0 4.0 2.7 2.3 2.8 4.1 5.8 7.0 8.2

我需要找到每个纬度/长坐标LatLongGrid,然后从拉相邻的数据Gridjandec并把这些在对应的列中数据帧LatLong手动执行此操作时,首先要找到最接近的纬度,然后查看相关的经度以找到最接近的匹配项。这将给我这样的解决方案:

Lat_orig    Long_orig   Lat_grid    Long_grid   Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
-55.417 -69.58  -55.417 -69.583 8.5 8.5 7.3 5.8 3.9 2.7 2.2 2.6 3.9 5.5 6.7 7.9
-55.417 -69.249 -55.417 -69.25  8.7 8.6 7.5 5.9 4   2.7 2.2 2.7 4   5.7 6.9 8.1
-55.417 -69.0831    -55.417 -69.083 8.8 8.8 7.6 6   4   2.7 2.3 2.8 4.1 5.8 7   8.2
-55.417 -69.417 -55.417 -69.417 8.4 8.3 7.2 5.7 3.7 2.4 2   2.4 3.7 5.3 6.5 7.7
-55.417 -69.749 -55.417 -69.75  8.5 8.4 7.3 5.8 4   2.7 2.2 2.6 3.8 5.5 6.6 7.9

请注意,在我的示例中,所有的“纬度”值都是恒定的,但在两个数据帧中它们也有所不同。

有谁知道最好的方法吗?我已经尝试gdist从package中使用Imap,并且我可以找到最近的点,但是一次只能找到一个坐标!有谁知道找到这些点并将数据移动到新数据框的好方法?

蓝色魔导师

广义问题,一维:

给定一组采样点和一组参考点,如何将一个点映射到其最接近的参考点?

让我们生成一些点和参考点。

set.seed(100)
pp <- sample(0:100, 10, replace = FALSE)
# [1] 31 25 54  5 45 46 77 34 50 15
rr <- sort(sample(0:100, 10, replace = FALSE))
# [1]  19  27  33  39  63  64  73  88  93 100

使用findInterval和中点:

## finds midpoints between reference points
midpoints <- head(rr,-1) + diff(rr)/2
# [1] 23.0 30.0 36.0 51.0 63.5 68.5 80.5 90.5 96.5
## determines which reference interval each sample point falls into
intv <- findInterval(pp, midpoints)
# [1] 2 1 4 0 3 3 6 2 3 0
## index back into reference point to find closest reference point
rr[intv+1]
# [1] 33 27 63 19 39 39 73 33 39 19

对您的纬度和经度都执行此操作,就可以找到合适的点。

要提取剩余的已记录数据,请使用merge尽管提防的浮点错误)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将数据框的列的值与其他数据框中的正确行匹配?

来自分类Dev

Excel:将两列与其他两列匹配

来自分类Dev

如何创建新列,将值与其他数据框中的标头匹配

来自分类Dev

数据争用-将一列中的值与其他列中的值匹配

来自分类Dev

如何将一列中的值映射到另一个数据框的其他两列,并提取两列中的匹配值?

来自分类Dev

VBA - 将两列中的单元格与其他两列中的单元格进行比较

来自分类Dev

带有PHP的SQLite3如何将列与其他列中的数据进行交叉引用

来自分类Dev

如何从两个数据框中按最接近的日期进行匹配?

来自分类Dev

映射两个熊猫数据帧(经度和纬度)的最接近值

来自分类Dev

如何通过匹配R中的其他两个列将一列中的值提取到数据框中

来自分类Dev

匹配两个不同文件中的最接近值并打印特定列

来自分类Dev

查询以基于其他列获取最接近的匹配值

来自分类Dev

基于列值对之间最接近的匹配来合并两个数据框

来自分类Dev

如何将列值显示为行并将数据与其他表连接?

来自分类Dev

如何在R的矩阵的两列中与其他两列进行比较,并同时生成一个新矩阵?

来自分类Dev

在其他两列中查找最匹配值的列中的值

来自分类Dev

如何将逗号分隔值与MySQL中的其他列匹配

来自分类Dev

如何将两列对与R中数据帧的另一对列进行比较

来自分类Dev

提取与R中其他列匹配的两个不同列中的值

来自分类Dev

将所有值str列数据框与其他数据框str列匹配

来自分类Dev

在两个数据框中按最接近的POSIXct匹配值,同时保留两个日期

来自分类Dev

Excel-比较两列,如果匹配,则从匹配的行中减去其他两列的值

来自分类Dev

您如何根据其他两列的不同组合检查第三列中的匹配值?

来自分类Dev

根据R中两个数据框的两列中的匹配对名称,将值添加到另一个数据框的其他值中

来自分类Dev

如何将csv中的两列与之前在python中声明的两个值进行比较?

来自分类Dev

熊猫将(A)列与其他(B)列进行比较并返回(A)列中存在的唯一值

来自分类Dev

标记与其他数据框中的值匹配的值

来自分类Dev

SQL选择具有与其他表中的列值匹配的列值的行

来自分类Dev

SQL选择具有与其他表中的列值匹配的列值的行

Related 相关文章

  1. 1

    如何将数据框的列的值与其他数据框中的正确行匹配?

  2. 2

    Excel:将两列与其他两列匹配

  3. 3

    如何创建新列,将值与其他数据框中的标头匹配

  4. 4

    数据争用-将一列中的值与其他列中的值匹配

  5. 5

    如何将一列中的值映射到另一个数据框的其他两列,并提取两列中的匹配值?

  6. 6

    VBA - 将两列中的单元格与其他两列中的单元格进行比较

  7. 7

    带有PHP的SQLite3如何将列与其他列中的数据进行交叉引用

  8. 8

    如何从两个数据框中按最接近的日期进行匹配?

  9. 9

    映射两个熊猫数据帧(经度和纬度)的最接近值

  10. 10

    如何通过匹配R中的其他两个列将一列中的值提取到数据框中

  11. 11

    匹配两个不同文件中的最接近值并打印特定列

  12. 12

    查询以基于其他列获取最接近的匹配值

  13. 13

    基于列值对之间最接近的匹配来合并两个数据框

  14. 14

    如何将列值显示为行并将数据与其他表连接?

  15. 15

    如何在R的矩阵的两列中与其他两列进行比较,并同时生成一个新矩阵?

  16. 16

    在其他两列中查找最匹配值的列中的值

  17. 17

    如何将逗号分隔值与MySQL中的其他列匹配

  18. 18

    如何将两列对与R中数据帧的另一对列进行比较

  19. 19

    提取与R中其他列匹配的两个不同列中的值

  20. 20

    将所有值str列数据框与其他数据框str列匹配

  21. 21

    在两个数据框中按最接近的POSIXct匹配值,同时保留两个日期

  22. 22

    Excel-比较两列,如果匹配,则从匹配的行中减去其他两列的值

  23. 23

    您如何根据其他两列的不同组合检查第三列中的匹配值?

  24. 24

    根据R中两个数据框的两列中的匹配对名称,将值添加到另一个数据框的其他值中

  25. 25

    如何将csv中的两列与之前在python中声明的两个值进行比较?

  26. 26

    熊猫将(A)列与其他(B)列进行比较并返回(A)列中存在的唯一值

  27. 27

    标记与其他数据框中的值匹配的值

  28. 28

    SQL选择具有与其他表中的列值匹配的列值的行

  29. 29

    SQL选择具有与其他表中的列值匹配的列值的行

热门标签

归档