我无法弄清楚以下代码有什么不正确的地方:
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)