我有两个表,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
"数据"表是一个面板数据集,它包含多个时间段和多个变量的多个国家(即使我在示例中只包含一个变量)."国家"表是所有国家的完整表 - 这里有三个.
我需要做的是一个连接,它填补了"数据"表中缺少的观察值,每年的值为NAs!加入后,"数据"表应如下所示:
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
Run Code Online (Sandbox Code Playgroud)
我认为正确的联合是正确的方向,它也有效,但它只包括一次NA.在上面的例子中,西班牙只会在"数据"表中包含一次.我做了这样一个简单的连接:
joined <- right_join(data, countries, by = c("ID"))
Run Code Online (Sandbox Code Playgroud)
是否存在类似于面板数据集的"重复连接"或我是否需要将数据集拆分为时间段,将它们单独连接并在之后附加它们?
谢谢!
你可以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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |