Создать столбец на основе дат в другом фрейме данных - PullRequest
0 голосов
/ 28 октября 2019

Я хотел бы определить приливное состояние кадра данных (DF)

DF <- data.frame(Date = c(2012-01-01 05:37:00,2012-01-01 05:50:00,2012-01-01 05:58:00), Tide= NA)

На основе приведенного ниже Tides кадра данных:

Tides <- data.frame(Date=c(2012-01-01 05:31:00,2012-01-01 11:30:00,2012-01-01 17:58:00), Tide=c(low tide,high tide,low tide))

Итак, я хотел быразделить данные на low и high прилив на основе их близости к low или high прилив к Tide фрейму данных.

Сначала я пытался создать интервалы с большим количеством точек данных в Tides кадре данных, но мне это не удалось, и я также не уверен, что это правильный способ запуска

Iхотел бы получить такой результат, но данные за несколько лет, поэтому это нельзя сделать вручную.

DF <- data.frame(Date = c(2012-01-01 05:37:00,2012-01-01 05:50:00,2012-01-01 05:58:00), Tide= c(low tide,low tide,low tide))

1 Ответ

0 голосов
/ 28 октября 2019

Я считаю, что это можно сделать с помощью which.min, и я нахожу ближайшее время по абсолютной разнице. Я использовал purrr для выполнения этой операции построчно.

Сначала я преобразовал дату и время в POSIXct:

DF = DF %>% 
  mutate(Date = as.POSIXct(Date))

Tides = Tides %>% 
  mutate(Date = as.POSIXct(Date))

Код ниже:

require(dplyr)
require(purrr)
DF = DF %>% 
  dplyr::mutate(Tide = purrr::map_chr(.x=Date,~as.character(Tides$Tide[which.min(abs(Tides$Date-.x))])))

Дайте мне знать, если это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...