You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并含经纬度且分辨率相同的两个DataFrame?

空间网格DataFrame合并问题

我有两个DataFrame(df_1 和 df_2),各自包含一个变量(var1 和 var2)。二者均为全球地图数据,拥有相同的CRS和空间分辨率(0.083精度的全球网格),对应变量的可视化效果分别为Var1、Var2。说明:我使用terra包,从不同空间分辨率和范围的NetCDF文件生成了这两个DataFrame。

我需要将两个变量合并到同一个DataFrame中进行分析,但尝试基于经纬度(lon、lat列)合并时,返回的var2列全为NA。我已尝试以下方法:

  • 使用dplyr的left_join:
> df <- df_1 %>%
+   left_join(df_2, by = c("lon", "lat"))
> summary(df)
      lon               lat               var1             var2        
 Min.   :-179.96   Min.   :-55.458   Min.   : 0.000   Min.   : NA      
 1st Qu.: -63.04   1st Qu.:  8.208   1st Qu.: 9.398   1st Qu.: NA      
 Median :  31.21   Median : 37.791   Median :15.052   Median : NA      
 Mean   :  20.81   Mean   : 30.864   Mean   :16.223   Mean   :NaN      
 3rd Qu.:  93.12   3rd Qu.: 56.791   3rd Qu.:21.898   3rd Qu.: NA      
 Max.   : 179.96   Max.   : 83.041   Max.   :62.238   Max.   : NA      
                                                      NA's   :2075418  
  • 转换为sf对象后使用st_join:
> sf_1 <- st_as_sf(df_1,
+                    coords = c("lon", "lat"),
+                    crs = 4326)
> sf_2 <- st_as_sf(df_2,
+                    coords = c("lon", "lat"),
+                    crs = 4326)
> df_spatialjoin <- st_join(sf_1, sf_2)
> summary(df_spatialjoin)
      var1             var2                  geometry      
 Min.   : 0.000   Min.   : NA       POINT        :2075418  
 1st Qu.: 9.398   1st Qu.: NA       epsg:4326    :      0  
 Median :15.052   Median : NA       +proj=long...:      0  
 Mean   :16.223   Mean   :NaN                               
 3rd Qu.:21.898   3rd Qu.: NA                               
 Max.   :62.238   Max.   : NA                               
                  NA's   :2075418                       
  • 将sf转回tibble后使用dplyr的left_join:
> df_join <- left_join(as_tibble(sf_1),
+                      as_tibble(sf_2),
+                      by = "geometry")
> summary(df_join)
      var1                 geometry            var2        
 Min.   : 0.000   POINT        :2075418   Min.   : NA      
 1st Qu.: 9.398   epsg:4326    :      0   1st Qu.: NA      
 Median :15.052   +proj=long...:      0   Median : NA      
 Mean   :16.223                           Mean   :NaN      
 3rd Qu.:21.898                           3rd Qu.: NA      
 Max.   :62.238                           Max.   : NA      
                                          NA's   :2075418  

我还尝试了fuzzyjoin包的geo_join,但同样无效。之前遇到类似问题时我用cbind()解决,但此次两个DataFrame行数不同,无法使用该方法。


内容的提问来源于stack exchange,提问作者Francesco Giardina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 22:02:43