这个问题与问题有些相关根据不平凡的标准有效合并两个数据帧 https://stackoverflow.com/questions/18840410/efficiently-merging-two-data-frames-on-a-non-trivial-criteria and 检查日期是否在 r 中的两个日期之间 https://stackoverflow.com/questions/31353595/checking-if-date-is-between-two-dates-in-r。我在这里发布的请求是否存在该功能:GitHub问题 https://github.com/hadley/dplyr/issues/557
我希望使用连接两个数据框dplyr::left_join()
。我用来加入的条件是小于、大于,即<=
and >
. Does dplyr::left_join()
支持这个功能吗?或者钥匙只需要=
他们之间的运算符。从 SQL 运行起来很简单(假设我在数据库中有数据框)
这是一个 MWE:我有两个数据集一个公司年(fdata
),而第二个是每五年发生一次的调查数据。所以多年来fdata
在两个调查年份之间,我加入相应的调查年份数据。
id <- c(1,1,1,1,
2,2,2,2,2,2,
3,3,3,3,3,3,
5,5,5,5,
8,8,8,8,
13,13,13)
fyear <- c(1998,1999,2000,2001,1998,1999,2000,2001,2002,2003,
1998,1999,2000,2001,2002,2003,1998,1999,2000,2001,
1998,1999,2000,2001,1998,1999,2000)
byear <- c(1990,1995,2000,2005)
eyear <- c(1995,2000,2005,2010)
val <- c(3,1,5,6)
sdata <- tbl_df(data.frame(byear, eyear, val))
fdata <- tbl_df(data.frame(id, fyear))
test1 <- left_join(fdata, sdata, by = c("fyear" >= "byear","fyear" < "eyear"))
I get
Error: cannot join on columns 'TRUE' x 'TRUE': index out of bounds
除非如果left_join
可以处理这种情况,但我的语法缺少某些东西?