#r #datetime #lubridate
#r #дата-время #lubridate
Вопрос:
Рассмотрим следующую временную метку
timestamp <- ymd_hms("2011-08-10 14:00:00", tz = "Pacific/Auckland")
> timestamp
[1] "2011-08-10 14:00:00 NZST"
Какой самый простой способ получить из нее часть дня 2011-08-10
и убедиться, что этот день является правильной датой, а не строкой?
Использование lubridate::day(timestamp)
здесь, очевидно, терпит неудачу.
Комментарии:
1. Просто сделайте
as.Date
2. Я думаю, вы ищете
lubridate::date
. Отличие отas.Date
заключается в том, чтоdate
используется дата в том виде, в каком она существует в назначенном часовом поясе, вместо того, чтобы сначала преобразовывать в UTC (используется по умолчанию вas.Date
, хотя может приниматьtz
параметр).3.
floor_date(timestamp,"day")
выдает POSIXct с правильным часовым поясом…4. Я думаю, вы также можете использовать lubridate и as_date now вместо as_datetime
mutate(day=as_datetime(timestamp))
, и это будет работать в канале
Ответ №1:
Вероятно, это был бы самый простой способ:
date(timestamp)
Он вернет класс date, а не строку.
Ответ №2:
Используйте дату вместо дня
lubridate::date(timestamp)
Ответ №3:
Теперь также есть функция data.table
s as.IDate()
:
timestamp <- "2011-08-10 14:00:00"
data.table::as.IDate(timestamp)