【发布时间】:2021-10-04 09:37:57
【问题描述】:
我有两个覆盖相同国家但不同年份的国家*年份级别的数据集。我想以某种方式合并两者,使年份与其最近的邻居匹配,始终在国家/地区内(iso2code)。
第一个 (dat1) 看起来像这样(这里只显示 AT 的头部,但 iso2code 有多个不同的值):
iso2code year elect_polar_lrecon
<chr> <dbl> <dbl>
1 AT 1999 2.48
2 AT 2002 4.18
3 AT 2006 3.66
4 AT 2010 3.91
5 AT 2014 4.01
6 AT 2019 3.55
第二个(dat2)看起来像这样:
iso2code year affpol
<chr> <dbl> <dbl>
1 AT 2008 2.47
2 AT 2013 2.49
3 DE 1998 2.63
4 DE 2002 2.83
5 DE 2005 2.89
6 DE 2009 2.09
最后我想要类似的东西(请注意,2008 年的 affpol 值可以与 2010 年和 2006 年匹配,因为它与两者的距离相等。如果可能,我会选择最近的日期,如下所示):
iso2code year.1 elect_polar_lrecon year.2 affpol
<chr> <dbl> <dbl> <dbl> <dbl>
1 AT 1999 2.48
2 AT 2002 4.18
3 AT 2006 3.66
4 AT 2010 3.91 2008 2.47
5 AT 2014 4.01 2013 2.49
6 AT 2019 3.55
不确定如何执行此操作...我很高兴有一个 tidyverse 解决方案,但真的,非常感谢所有帮助!
【问题讨论】:
-
你能显示你的预期输出吗?
-
我做了,抱歉没有马上做。
-
在
data.table中滚动加入应该很简单。参见例如Matching timestamped data to closest time in another dataset. Properly vectorized? Faster way?。只需在 R 标签中搜索“data.table roll 最近”即可查看其他几个不错的帖子。