首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >合并不相等面板数据时的重复行

合并不相等面板数据时的重复行
EN

Stack Overflow用户
提问于 2020-02-13 21:36:52
回答 1查看 107关注 0票数 0

我需要合并两个不同大小的面板数据集。这些数据集都是按坐标列进行地理参考的。其中一个数据集中的单元是网格单元,它们一起覆盖整个世界。该数据集的坐标是指网格单元的质心。另一个数据集包含有关冲突的数据,以及冲突发生位置的坐标。

然而,当我尝试通过坐标合并这些数据集时,冲突事件没有按年正确放置,这会使一切变得混乱。我相信我可以通过在每个网格单元年有多个冲突事件的地方创建重复的行来“修复”这个问题,但是我不知道怎么做。

代码语言:javascript
运行
复制
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

如有任何建议,我们将不胜感激!

编辑:我尝试过不同的代码,我会写一些例子。

代码语言:javascript
运行
复制
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中有多个事件发生,但是我真的很难找到这样做的方法。

EN

回答 1

Stack Overflow用户

发布于 2020-02-13 22:32:57

我不确定您想要的输出,但下面是使用merge合并两个数据帧的示例

代码语言:javascript
运行
复制
dfout <- merge(df1,df2,all = T)

这样的话

代码语言:javascript
运行
复制
> 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60209144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档