我有两个表如下所示:
Table "data" Table "countries"
------------------------------ -----------------
ID Time Country Variable Value ID Country
1 2013 Austria V1 150 1 Austria
1 2014 Austria V1 170 2 Germany
1 2015 Austria V1 200 3 Spain
2 2013 Germany V1 280
2 2015 Germany V1 350
"数据" table是一个面板数据集,它包含多个时间段和多个变量中的多个国家/地区(即使我在示例中只包含一个变量)。 "国家"表格是所有国家的完整表格 - 这里有三个。
我需要做的是一个连接,它填补了"数据中的缺失观察结果。表与每年的价值的NA!加入"数据"表应如下所示:
Table "data"
------------------------------
ID Time Country Variable Value
1 2013 Austria V1 150
1 2014 Austria V1 170
1 2015 Austria V1 200
2 2013 Germany V1 280
2 2014 Germany V1 NA
2 2015 Germany V1 350
3 2013 Spain V1 NA
3 2014 Spain V1 NA
3 2015 Spain V1 NA
我认为正确的联接是正确的方向,它也有效,但它只包括一次NA。在上面的例子中,西班牙只会被包含在"数据"表。我做了一个简单的连接:
joined <- right_join(data, countries, by = c("ID"))
是否有类似&#34;重复加入&#34;对于面板数据集还是我需要将数据集拆分为时间段,单独加入它们并在之后追加它们?
谢谢!
答案 0 :(得分:6)
您可以使用包complete
中的tidyr
:
library(tidyr)
right_join(data, countries) %>%
complete(Time, Variable, nesting(Country, ID))
Time Variable Country ID Value
(int) (chr) (chr) (int) (int)
1 2013 V1 Austria 1 150
2 2013 V1 Germany 2 280
3 2013 V1 Spain 3 NA
4 2014 V1 Austria 1 170
5 2014 V1 Germany 2 NA
6 2014 V1 Spain 3 NA
7 2015 V1 Austria 1 200
8 2015 V1 Germany 2 350
9 2015 V1 Spain 3 NA