Я работаю с датами и хочу создать столбец, в котором будет указано, сколько дней пройдет до события. Затем я хочу отфильтровать количество дней. Я заметил, что 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 читает это в днях, а не в любой другой единице времени.