Сделать R / Lubridate последовательно выходной в днях - PullRequest
0 голосов
/ 07 июня 2019

Я работаю с датами и хочу создать столбец, в котором будет указано, сколько дней пройдет до события. Затем я хочу отфильтровать количество дней. Я заметил, что lubridate иногда меняет модуль (иногда дни, иногда часы), поэтому я хочу, чтобы мой код был явным, так как я хочу его через несколько дней.

Вот пример набора данных:

library(dplyr)
library(lubridate)
problem <- tibble(location = c("Atlanta, GA", "New York City, NY", "San Francisco, CA"),
                  travel_date = ymd_hms(c("2018-12-17 02:30:00", "2019-7-17 02:30:00", "2020-12-20 09:30:00")))

Чтобы явно указать, что я хочу единицу в днях, я попытался использовать round_date ():

problem %>%
  mutate(days_to_deadline = round_date(travel_date - now(), unit = "day")) %>%
  filter(days_to_deadline <= 100 & days_to_deadline >= 0) 

Но я получаю эту ошибку:

Error in as.POSIXct.default(x) : 
  do not know how to convert 'x' to class “POSIXct”

В данном случае этот код работает:

problem %>%
  mutate(days_to_deadline = round(travel_date - now())) %>%
  filter(days_to_deadline <= days(50) & days_to_deadline >= 0) 

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

...