【问题标题】:Merging two data frame with the coordinate in r [duplicate]将两个数据框与r中的坐标合并[重复]
【发布时间】:2016-03-25 19:08:35
【问题描述】:

我有两个数据集,一个只有世界网格“Ggrid” - (LON- -179.875, 179.875 和 LAT- -89.875, 89.875。总共 1036800 ),另一个有不同的世界网格和氧气数据深度 "1JAN" - ( LON- -79.5, 179.5 和 LAT- -89.5, 89.85.)。我想通过世界网格合并这些数据,以便我总共有 1036800(720 x 1440),并且没有数据的单元格应该是 NA。

我试过这个;

> ENV1<-read.csv('1JAN.csv')
> Ggrid<-read.csv('Ggrid.csv')
> head(Ggrid)
       LON     LAT
1 -179.875 -89.875
2 -179.875 -89.625
3 -179.875 -89.375
4 -179.875 -89.125
5 -179.875 -88.875
6 -179.875 -88.625

> ENV1 <- ENV1[,1:7]
> head(ENV1)
    LAT    LON   X0    X5   X10
1 -77.5 -178.5 8.28    NA    NA
2 -77.5 -174.5   NA    NA    NA
3 -77.5 -170.5 7.96 7.991 8.000
4 -77.5 -167.5 8.08 8.090 8.100
5 -77.5 -165.5 8.09 8.154 8.180
6 -77.5 -163.5 8.93 8.923 8.905


> m2 <- merge(Ggrid, ENV1, by = c("LAT","LON")all.x=T)


1   NA   NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
2   NA   NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
3   NA   NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
4   NA   NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
5   NA   NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
6   NA   NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA

问题是坐标不匹配,所有点都可能位于 Ggrid 上。 我之前问过这个问题,如果坐标匹配,则给出了答案,但在这种新情况下,坐标不同。

ENV1 看起来像这样:

LON LAT X0  X5  X10
-77.5   -178.5  8.28    NA  NA
-77.5   -178    7.28    NA  NA
-77.5   -177.5  8.06    NA  NA
-77.5   -177    7.65    7.43    NA
-77.5   -176.5  7.54    7.32    NA
-77.5   -176    7.43    7.21    NA
-77.5   -175.5  7.32    7.1 7.28
-77.5   -175    7.21    6.99    8.06
-77.5   -174.5  7.1 6.88    7.65
-77.5   -174    6.99    7.43    7.54
-77.5   -173.5  6.88    7.32    6.88
-77.5   -173    6.77    7.21    7.28
-77.5   -172.5  6.66    7.28    7.28

与COO合并后;它应该看起来像这样;

LON LAT X0  X5  X10
-77.675 -178.875    8.28    NA  NA
-77.675 -178.625    7.28    NA  NA
-77.675 -177.375    8.06    NA  NA
-77.675 -177.125    7.65    7.43    NA
-77.675 -176.875    7.54    7.32    NA
-77.675 -176.625    7.43    7.21    NA
-77.675 -175.375    7.32    7.1 7.28
-77.675 -175.125    7.21    6.99    8.06
-77.675 -174.875    7.1 6.88    7.65
-77.675 -174.625    6.99    7.43    7.54
-77.675 -173.375    6.88    7.32    6.88
-77.675 -173.125    6.77    7.21    7.28
-77.675 -172.875    6.66    7.28    7.28

希望这有助于进一步。谢谢

【问题讨论】:

  • 将来最好提出一个新问题而不是更改问题。遇到此问题的未来读者可能看不到答案和问题(已更改)之间的上下文。当它是一个新问题时,你也有更高的机会让人们看到这个问题并试图提供帮助。
  • 我确实问了另一个问题,但人们说它是重复的,所以我被告知我应该编辑它以适应新问题。谢谢
  • @user5545418 我没有告诉你。我告诉过你linked question and answer 提供了一个解决方案,说明如何根据纬度-经度组合的接近度将值从一个数据帧添加到另一个数据帧。请研究该答案并尝试将其应用于您自己的数据。重复意味着以前曾问过类似的问题。如果您需要更多说明,请在评论中告诉我。

标签: r


【解决方案1】:

我认为您正在寻找左连接。试试m2 &lt;- merge(Ggrid, ENV1, by=c("LAT", "LON"), all.x=T)

【讨论】:

  • @Ricky,你就是那个男人。谢谢它的作品
  • 只有在坐标相同的情况下才有效,请问您能帮忙吗?谢谢
  • 不确定我是否理解正确,当您说“坐标不匹配”时,您的意思是ENV1 中的所有LATLONGgrid 中都找不到吗?
  • 是的,找不到坐标,因为 ENV1 是 1° 网格,Ggrid 是 1/4° 网格。谢谢
  • 如果未找到,那么说未找到(即NA)是正确的行为,不是吗?也许你应该举一个你期望输出得到输入的例子,因为我希望所有NA都是正确的。
【解决方案2】:

更雄辩的说,使用包 dplyr 来达到同样的效果:

Ggrid %>% left_join(ENV1, by=c("LAT", "LON"))

【讨论】:

    猜你喜欢
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2018-06-25
    相关资源
    最近更新 更多