r - Dplyr 非等值连接不再接受 join_by 参数

标签 r dplyr lubridate

此代码几天前有效:

df<- tribble(
  ~ unique_id, ~event_type, ~ event_date,
  'id_101', 'A_type_event', '2022-01-01',
  'id_101', 'B_type_event', '2022-02-01',
  'id_101', 'A_type_event', '2022-02-15',
  'id_101', 'A_type_event', '2022-02-28',
  'id_101', 'B_type_event', '2022-03-01',
  'id_101', 'C_type_event', '2022-03-10',
  'id_101', 'A_type_event', '2022-03-20',
  'id_101', 'C_type_event', '2022-04-01'
)  
 left_join(
  df %>% filter(event_type == "A_type_event"),  # match A_type_event
  df %>% filter(event_type == "C_type_event"),   # with C_type_event
  #join_by(event_date < event_date),          # where A_type_event before C_type_event
  join_by(unique_id, event_date < event_date), # ... and unique id matches
  multiple = "first")                        # and just keep first match

Error code now is: Error in dplyr::common_by(): ! by must be a (named) character vector, list, or NULL for natural joins (not recommended in production code), not a <dplyr_join_by> object.

我在 rdrr.io 上测试了示例代码和另一个相关stack overflow question在同一主题上,它们都返回相同的错误。

知道如何修复代码吗?

最佳答案

不清楚问题中使用的版本。 join_bydplyr 的开发版本。如果我们将开发版本安装为

,则代码可以工作
devtools::install_github("tidyverse/dplyr")

library(dplyr)
> left_join(
+   df %>% filter(event_type == "A_type_event"),  # match A_type_event
+   df %>% filter(event_type == "C_type_event"),   # with C_type_event
+   #join_by(event_date < event_date),          # where A_type_event before C_type_event
+   join_by(unique_id, event_date < event_date), # ... and unique id matches
+   multiple = "first")                       
# A tibble: 4 × 5
  unique_id event_type.x event_date.x event_type.y event_date.y
  <chr>     <chr>        <chr>        <chr>        <chr>       
1 id_101    A_type_event 2022-01-01   C_type_event 2022-03-10  
2 id_101    A_type_event 2022-02-15   C_type_event 2022-03-10  
3 id_101    A_type_event 2022-02-28   C_type_event 2022-03-10  
4 id_101    A_type_event 2022-03-20   C_type_event 2022-04-01  

关于r - Dplyr 非等值连接不再接受 join_by 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74141591/

相关文章:

r - 使用lubridate库的问题

javascript - r2d3:d3.js 条形图在调整大小时消失

R 组合列表项

r - 在 dplyr 中,如何通过可能存在或可能不存在的列连接数据帧?

r - 查找多列具有相同值的行

r - 使用顺序数据标记 dplyr 中的条件事件

r - 使用日期序列扩展函数内的数据框

减少计算系数的处理时间

r - 从 R 中的年、月和周数据中插入年月日

r - 按组在多个时间间隔列之间重叠