【发布时间】:2019-02-24 20:16:50
【问题描述】:
我有两个带有等效键的小标题(西班牙和加拿大),我正在尝试通过“国家/地区”加入它们。下面是它们的样子:
Country stratum oecd schoolID studentID booklet q q_1 q_2 q_3 q_4
q_5 q_6 q_7 q_8 q_9
<chr> <chr> <int> <chr> <chr> <int> <int> <int> <int> <int> <int>
<int> <int> <int> <int> <int>
1 ESP ESP1633 1 0000001 00005 5 NA 0 NA 1 0 0 1 0 0 NA
2 ESP ESP1633 1 0000001 00014 5 NA 0 NA 1 1 1 2 0 1 NA
3 ESP ESP0306 1 0000002 00040 5 NA 0 NA 1 0 1 2 0 1 NA
4 ESP ESP0306 1 0000002 00041 5 NA 0 NA 1 0 1 2 0 1 NA
5 ESP ESP1633 1 0000003 00062 5 NA 0 NA 0 1 1 2 0 0 NA
6 ESP ESP1427 1 0000004 00102 5 NA 0 NA 0
Country stratum oecd schoolID studentID booklet q q_1 q_2 q_3 q_4
q_5 q_6 q_7 q_8 q_9
<chr> <chr> <int> <chr> <chr> <int> <int> <int> <int> <int>
<int> <int> <int> <int> <int> <int>
1 CAN CAN0762 1 0000001 00014 5 NA 0 NA 1 1 1 2 1 1 NA
2 CAN CAN0762 1 0000001 00020 5 NA 0 NA 1 1 1 2 1 0 NA
3 CAN CAN0542 1 0000002 00039 5 NA 0 NA 1 0 1 2 1 1 NA
4 CAN CAN0652 1 0000003 00061 5 NA 0 NA 1 1 1 2 0 1 NA
5 CAN CAN0652 1 0000003 00063 5 NA 0 NA 1 0 1 2 2 1 NA
6 CAN CAN0652 1 0000004 00078 5 NA 0 NA 0 0 1 1 0 1 NA
当我尝试任一时
combo<-inner_join(spain,canada,by='Country')
或
spain%<%
innerjoin(canda,by='Country')
我得到的结果是
A tibble: 0 x 227
# ... with 227 variables: Country <chr>, stratum.x <chr>, oecd.x <int>,
请帮忙!我的直觉是 tibble 应该是大约 3500 行(西班牙 + 加拿大的总值)我想得到它,以便西班牙和加拿大的所有值都在一个 tibble 中,以便我最终可以执行差异项目功能(DIF ) 分析。提前致谢!
【问题讨论】:
-
您应该使用
full_join,因为国家/地区不同,因此没有过度实验室,因此inner_join中没有任何内容 -
您的内部连接要求提供 country='spain' & country='canada' 的行。自“西班牙”“加拿大”以来没有这样的行。您似乎希望 country='spain' 的行合并 country='canada' 的行,即 country='spain' 或 country='canada' 的行。这也是国家='西班牙'的行的选择/限制的关系联合,国家='加拿大'的行的选择/限制。它也是 country='spain' 或 country='canada' 的内部连接。完全连接是内部连接行联合由空值扩展的不匹配行,因此您可以对联合使用 false 完全连接。
标签: r inner-join tibble