Этот вопрос несколько связан с проблемами Эффективное слияние двух фреймов данных по нетривиальным критериям и Проверка даты между двумя датами в г. И тот, который я разместил здесь, запрашивая, существует ли функция: Проблема GitHub
Я хочу присоединиться к двум фреймам данных, используя dplyr::left_join()
. Условие, которое я использую для соединения, меньше, чем, больше, чем i.e, <=
и >
. Поддерживает ли dplyr::left_join()
эту функцию? или клавиши имеют только оператор =
между ними. Это просто для запуска из SQL (при условии, что у меня есть dataframe в базе данных)
Вот 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"))
Я получаю
Error: cannot join on columns 'TRUE' x 'TRUE': index out of bounds
Если if left_join
может обрабатывать условие, но мой синтаксис отсутствует что-то?