dplyr 中的不平等 join_by

问题描述 投票:0回答:0

我无法弄清楚以下代码有什么不正确的地方:


df %>% left_join(
    treatment_start_dates,
    by = join_by(district, date >= treatment_start_date)
)

这里是一个示例虚拟数据集来重现此错误:

#create data with dates and districts
df <- data.frame(
    date = c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5),
    district = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2)
)

#create data with district treatment dates
treatment_start_dates <- data.frame(
    treatment_start_date = c(3, 5),
    district = c(1,2),
    value = c(1,1)
)

我的预期输出如下:

df <- data.frame(
    date = c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5),
    district = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2),
    value= c(0, 0, 1, 1, 1, 0, 0, 0, 0, 1),
)

也就是说,对于

value
之后的所有日期,
treatment_start_date
应该是1。 但是,我不断收到错误消息:

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.

知道这里会发生什么吗? (运行 dplyr 1.1.0)

r dplyr left-join
© www.soinside.com 2019 - 2024. All rights reserved.