Как объединить ограничения на основе R-данных в столбце времени

У меня есть две таблицы R, каждая со списком пользователей и отметкой времени, соответствующей времени, когда они предприняли определенное действие.

Первый из них (df1) две таблицы содержат исчерпывающий список пользователей, и у пользователей будет несколько строк с разными временными метками.

Второй (df2) будет иметь более ограниченный список пользователей, но опять же пользователи будут находиться в таблице несколько раз с разными временными метками.

То, что я хотел бы сделать, это соединить две таблицы и получить таблицу, которая соответствует пользователю вdf1 с ближайшей отметкой времени вdf2, пока отметка времени вdf2 получилосьпосле один вdf1.

Например, если бы у меня было две таблицы вроде:

df1 <- data.frame(c(1,1,2,3), as.POSIXct(c('2016-12-01 08:53:20', '2016-12-01 12:45:47', '2016-12-01 15:34:54', '2016-12-01 00:49:50')))
names(df1) <- c('user', 'time')

df2 <- data.frame(c(1,1,3), as.POSIXct(c('2016-12-01 07:11:01', '2016-   12-01 11:50:11', '2016-12-01 01:19:10')))
names(df2) <- c('user', 'time')

Давать нам:

> df1
  user                time
1    1 2016-12-01 08:53:20
2    1 2016-12-01 12:45:47
3    2 2016-12-01 15:34:54
4    3 2016-12-01 00:49:50

> df2
  user                time
1    1 2016-12-01 07:11:01
2    1 2016-12-01 11:50:11
3    3 2016-12-01 01:19:10

Результат, на который я надеюсь получить, будет выглядеть так:

user              time_1                 time_2
 1   2016-12-01 08:53:20    2016-12-01 11:50:11
 1   2016-12-01 12:45:47    NA
 2   2016-12-01 15:34:54    NA
 3   2016-12-01 00:49:50    2016-12-01 01:19:10

Я застрял на пути, чтобы заставить это объединение работать. В качестве дополнительного уровня сложности мне бы понравилось, если бы был параметр, который контролировал временное окно, чтобы разрешить совпадение (то есть, только присоединяться к строке изdf2 если это внутриX минутыdf1), но на самом деле это вторично по отношению к основной проблеме.

Ответы на вопрос(2)

Ваш ответ на вопрос