等しくないパネルデータをマージすると、行が重複する

2020-02-13 r dataframe merge rstudio

サイズの異なる2つのパネルデータセットをマージする必要があります。これらのデータセットはどちらも座標列によって地理参照されています。いずれかのデータセットの単位はグリッドセルであり、全体で全世界をカバーしています。このデータセットの座標は、グリッドセルの重心を参照します。もう1つのデータセットには、競合が発生した場所の座標を含む競合に関するデータがあります。

ただし、これらのデータセットを座標でマージしようとすると、競合イベントが年ごとに正しく配置されず、すべてが混乱します。 grid-cell-yearごとに複数の競合イベントがある重複行を作成することでこれを「修正」できると思いますが、これを行う方法がわかりません。

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の行の1つがニューヨークであるとします。 1991年には、ds2に3つのイベントがあり、NYCセル内に配置されています。現在のところ、これらのイベントの1つだけが正しくマージされます。つまり、座標と年の両方です。他の細胞は、年に1細胞年しか観察されないため、年ごとに見当違いになるでしょう。各競合イベントを別々の行にしたい。確かに限られた知識では、同じセル年にDS2で複数のイベントが発生しているDS1の行を複製することでこれを修正できると思いますが、これを行う方法を見つけるのに本当に苦労しています。

Answers

希望する出力についてはわかりませんが、以下はmergeを使用mergeて2つのデータフレームを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

Related