sql - Dplyr:在面板数据集上寻找与 NA 的连接

标签 sql r join dplyr

我有两个表,如下所示:

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

“数据”表是一个面板数据集,由多个国家、多个时间段和多个变量组成(即使我在示例中只包含一个变量)。 “国家/地区”表是所有国家/地区的完整表 - 这里是三个。

我需要做的是一个连接,用 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"))

面板数据集是否有类似“重复连接”的东西,或者我是否需要将数据集分割成时间段,分别连接它们并在之后附加它们?

谢谢!

最佳答案

您可以使用 tidyr 包中的 complete:

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

关于sql - Dplyr:在面板数据集上寻找与 NA 的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37302353/

相关文章:

r - 使用来自 2 个矩阵的值来索引 R 中的第三个矩阵

php - 检查字符串是否包含 2 个值

java - 来自java的R,没有图形: is it worth moving to JRI

SQL,在表中选择

r - 从现有数据框动态创建新数据框

python - Pandas Join 未提供确切的结果

MySQL JOIN 复杂性

php - Wordpress 查询添加 INNER/LEFT JOIN。为什么或如何删除/防止 INNER/LEFT JOIN?

php - mysql查询获取表1中的所有字段和表2中的部分字段

sql - 使用游标时如何避免 T-SQL 中重复的 FETCH?