我已经检查了这个问题,但找不到匹配的条目 .
假设您有2个DF:
df1:mode df2:sex
1 1
2 2
3
以及DF3,其中大多数组合不存在,例如,
mode | sex | cases
1 1 9
1 1 2
2 2 7
3 1 2
1 2 5
并且你想用dplyr总结它获得所有组合(不存在的组合= 0):
mode | sex | cases
1 1 11
1 2 5
2 1 0
2 2 7
3 1 2
3 2 0
如果你单个left_join(left_join(df1,df3)你恢复不在df3中的模式,但'Sex'显示为'NA',如果你执行left_join(df2,df3)则相同 .
所以你怎么能做左联接来恢复所有缺席组合,案例= 0? dplyr首选,但sqldf是一个选项 .
在此先感谢,p .
2 回答
首先,这里是您更友好,可重复的格式的数据
我没有在
dplyr
中看到完整外连接的选项,所以我将在这里使用基本R来合并df1
和df2
以获得所有模式/性别组合 . 然后我将其连接到数据并用零替换NA值 .这使
tidyr 的开发版本,tidyr_0.2.0.9000,有一个名为
complete
的新函数,我前几天看到它似乎是针对这种情况而制作的 .帮助页面说:
要添加缺少的
df3
组合并填充0值,您可以执行以下操作:你仍然需要
group_by
和summarise
来获得你想要的最终输出 .