我需要合并两个不同大小的面板数据集。这些数据集都是按坐标列进行地理参考的。其中一个数据集中的单元是网格单元,它们一起覆盖整个世界。该数据集的坐标是指网格单元的质心。另一个数据集包含有关冲突的数据,以及冲突发生位置的坐标。
然而,当我尝试通过坐标合并这些数据集时,冲突事件没有按年正确放置,这会使一切变得混乱。我相信我可以通过在每个网格单元年有多个冲突事件的地方创建重复的行来“修复”这个问题,但是我不知道怎么做。
Dataset1 (Grid-cell structure)
X gid row col xcoord ycoord imr_mean year
100 1 195 197 -81.75 7.25 200.00 1990
101 2 195 197 -81.75 7.25 200.00 1992
102 3 195 197 -81.75 7.25 200.00 1991
103 4 195 197 -81.75 7.25 200.00 1993
104 5 195 197 -81.75 7.25 200.00 1994
105 6 195 197 -81.75 7.25 200.00 2000
106 7 195 197 -81.75 7.25 200.00 2001
107 8 195 197 -81.75 7.25 200.00 1998
108 9 195 197 -81.75 7.25 200.00 1999
109 10 195 197 -81.75 7.25 200.00 1996
110 11 195 197 -81.75 7.25 200.00 1995
Dataset 2 (Conflict events)
X eventid gwno xcoord ycoord ndeath year
32 400032 40 24.01 -81.84 41 1994
300 410041 41 18.53 -72.33 5 1990
302 410043 41 19.66 -72.55 8 1990
308 410049 41 18.43 -72.86 13 1990
313 410054 41 18.53 -72.33 14 1990
323 410062 41 18.53 -72.33 7 1990
325 410064 41 18.97 -74.26 12 1991
326 410065 41 18.53 -72.33 13 1991
424 410151 41 18.53 -72.33 5 1993
471 410205 41 18.29 -73.82 30 1994
如有任何建议,我们将不胜感激!
编辑:我尝试过不同的代码,我会写一些例子。
test <- merge(ds1, ds2, by.x = "xcoord", by.y = "ycoord")
test <- geo_join(ds1, ds2, by = c("xcoord", "ycoord"), max_dist = 27.5, unit = "km", mode = "full"
test <- geo_full_join(ds1, ds2, by = c(ds1$xcoord, ds2$xcoord), method = "haversine", unit = "km", max_dist = 27.5, distance_col = NULL)
geo_joins似乎根据坐标正确地放置了事件,但不是按年份。我想要的输出应该按年份和区域正确地放置事件。例如,假设ds1中有一行是纽约州。在1991年,ds2中有三个事件被放在NYC-cell中。就像现在一样,这些事件中只有一个事件将被正确合并,即按坐标和年份合并。其他的将按年错位,因为每年只有一个单元-年-观察值。我希望每个冲突事件都是一个单独的行。我相信,以我有限的知识,可以通过复制DS1中的行来解决这个问题,因为在同一个单元格年中,DS2中有多个事件发生,但是我真的很难找到这样做的方法。
发布于 2020-02-13 22:32:57
我不确定您想要的输出,但下面是使用merge
合并两个数据帧的示例
dfout <- merge(df1,df2,all = T)
这样的话
> dfout
X xcoord ycoord year gid row col imr_mean eventid gwno ndeath
1 32 24.01 -81.84 1994 NA NA NA NA 400032 40 41
2 100 -81.75 7.25 1990 1 195 197 200 NA NA NA
3 101 -81.75 7.25 1992 2 195 197 200 NA NA NA
4 102 -81.75 7.25 1991 3 195 197 200 NA NA NA
5 103 -81.75 7.25 1993 4 195 197 200 NA NA NA
6 104 -81.75 7.25 1994 5 195 197 200 NA NA NA
7 105 -81.75 7.25 2000 6 195 197 200 NA NA NA
8 106 -81.75 7.25 2001 7 195 197 200 NA NA NA
9 107 -81.75 7.25 1998 8 195 197 200 NA NA NA
10 108 -81.75 7.25 1999 9 195 197 200 NA NA NA
11 109 -81.75 7.25 1996 10 195 197 200 NA NA NA
12 110 -81.75 7.25 1995 11 195 197 200 NA NA NA
13 300 18.53 -72.33 1990 NA NA NA NA 410041 41 5
14 302 19.66 -72.55 1990 NA NA NA NA 410043 41 8
15 308 18.43 -72.86 1990 NA NA NA NA 410049 41 13
16 313 18.53 -72.33 1990 NA NA NA NA 410054 41 14
17 323 18.53 -72.33 1990 NA NA NA NA 410062 41 7
18 325 18.97 -74.26 1991 NA NA NA NA 410064 41 12
19 326 18.53 -72.33 1991 NA NA NA NA 410065 41 13
20 424 18.53 -72.33 1993 NA NA NA NA 410151 41 5
21 471 18.29 -73.82 1994 NA NA NA NA 410205 41 30
https://stackoverflow.com/questions/60209144
复制相似问题