首页 > 解决方案 > dplyr 可以在 join 操作后自动生成带有合并结果的列吗?

问题描述

这似乎是一个基本的问题,但在查看文档并搜索 Internet 后,我​​找不到答案。

我的问题是:R 是否dplyr包含在加入两个数据框后自动生成具有合并结果的列的参数?对于连接操作,我的意思是left_join,right_joinfull_join

我正在考虑类似于_merge您可以在 Python 上使用参数生成的列,pandas或者使用该命令默认生成的Stata变量。indicator = Truemerge_mergemerge

例如:

df1 <- data.frame(id = c(1,2), value1 =  c(1,1))
df2 <- data.frame(id = c(1,3), value2 =  c(2,1))
result <- df1 %>% full_join(df2, by = 'id', merge_results_option = TRUE)
# Notice that merge_results_option is the argument I'm looking for with this question, if it exists

应该产生:

|--------------|---------------|--------------|--------------|
|      id      |     value1    |    value2    |    _merge    |
|--------------|---------------|--------------|--------------|
|       1      |       1       |       2      |   both       |
|       2      |       1       |       NA     |   left       |
|       3      |       NA      |       1      |   right      |
|--------------|---------------|--------------|--------------|

标签: rdplyrmerge

解决方案


这或多或少是由tidylogpackage 实现的。它打印一条总结匹配数量的消息,但确实添加了一个标识每一行的列。

您可以在dplyr此处阅读有关功能请求的讨论,该讨论导致tidylog

鉴于tidylog已经很好地解决了这个问题,我不再认为这需要在dplyr

尽管一些用户仍然对缺少列添加功能感到不满。令人惊讶的是,我没有在tidylog 问题中看到该功能请求,因此也许您可以将其添加到那里。


推荐阅读