#r #if-statement #lubridate
Вопрос:
Я хотел бы объединить два кадра данных: (скажем, A и B). Каждый из них имеет два столбца: ymd_hms и значение 1 в кадре данных, в то время как ymd_hms и значение 2 в кадре данных B. Но ymd_hms в кадре данных и ymd_hms в кадре данных B всегда одинаковы. Вот в чем вопрос. Я хотел бы взять значение 2 из фрейма данных B, если
- ymd_hms в кадре данных равен ymd_hms в кадре данных B, или
- ymd_hms в кадре данных более или менее равно ymd_hms в кадре данных B (т. Е. Допустима разница в одну или две минуты). Не могли бы вы, пожалуйста, помочь мне, как это закодировать?
A %gt;% mutate(Value 2 = ifelse (A$ymd_hms == B$ymd_hms| A$ymd_hms == which(B$ymd_hms minute(2)), B$ymd_hms - (minute(2)), Value 2, NA)
Я не получил ожидаемого результата.
Комментарии:
1. Это звучит так, как будто вы могли бы попробовать что-то вроде
fuzzyjoin
пакета или использовать что-то вроде неэквивалентного соединения илиfoverlaps
сdata.table
помощью . Эти типы соединений могут хорошо работать с 2 кадрами данных, и вы можете указать разницу во времени. Если вы предоставите некоторые примеры данных (как выглядят таблицы A и B, возможно, несколько строк данных) и желаемый результат, вы, скорее всего, получите ответ с примером кода, использующим один из этих подходов.