我的问题与这个问题有关,但它是针对
我想做的是执行全外连接并创建一个指示器变量来说明合并结果,就像
具体来说,我希望在执行全外连接操作后有一个
更新:我已经更新了例子。
dplyr
解决方案的。我想做的是执行全外连接并创建一个指示器变量来说明合并结果,就像
pandas
或STATA
一样。具体来说,我希望在执行全外连接操作后有一个
_merge
列,该列指示左侧、右侧或两者合并结果,如下所示的例子。更新:我已经更新了例子。
key1 = c('a','b','c','d','e')
v1 = c(1,2,3, NA, 5)
key2 = c('a','b','d','f')
v2 = c(4,5,6,7)
df1 = data.frame(key=key1,v1)
df2 = data.frame(key=key2,v2)
> df1
key v1
1: a 1
2: b 2
3: c 3
4: d NA
5: e 5
> df2
key v2
1: a 4
2: b 5
3: d 6
4: f 7
# merge result I'd like to have
key v1 v2 _merge
1: a 1 4 both
2: b 2 5 both
3: c 3 NA left_only
4: d NA 6 both # <- not right_only, both
5: e 5 NA left_only
6: f NA 7 right_only
我想知道是否有现成的data.table
功能可以帮助我完成这个任务,或者有没有简单的方法可以实现?
python
编写的。你想要R
解决方案还是 python? - akrundf2[df1, on = .(key1)][,
_merge:= fcase(is.na(v2), 'left_only', 'both')]
。 - akrunfifelse
功能,将两个数据框df1
和df2
根据key1
连接在一起,并创建一个名为_merge
的列来表示v2
列是否为空。如果是空值,则将其表示为“left_only”,否则表示为“both”。最终返回合并后的结果。 - akrun[
进行连接只执行单侧。df2[df1, on=.(key1)]
不会删除df2中未匹配的行吗? - Matthew Son