#r #timestamp #lubridate
#r #временная метка #lubridate
Вопрос:
Я хочу преобразовать временные метки из символов во время, но мне не нужна никакая дата. Кроме того, он должен отображать миллисекунды, как в «hh: mm: ss, os».
Если я использую as.POSIXCT
, он всегда добавляет префикс даты к моей временной метке, а это не входит в мои намерения. Я также проверил lubridate
пакет, но, похоже, не могу найти функцию, которая выходит за рамки «as.hms», чтобы она отображала по крайней мере две цифры в миллисекундах.
Пример использования POSIXct
df <-c("01:31:12.20","01:31:14.56","01:31:14.84")
options(digits.secs = 2)
df <- as.POSIXct(df, format="%H:%M:%OS")
Это и есть результат:
[1] "2019-03-15 01:31:12.20 EDT" "2019-03-15 01:31:14.55 EDT"
[3] "2019-03-15 01:31:14.83 EDT"
Спасибо.
Комментарии:
1. К сожалению, это не работает, поскольку формат функции chron () также «чч: мм: сс», в нем нет миллисекунд.
2. для даты также нужна дата, если я понимаю
3. Верно. Я отредактирую часть «дата».
4. хорошо, тогда непонятно, чего вы действительно хотели, потому что
hms(df)
преобразует это вPeriod
class5. @goncaloveiga Вам нужна дата, чтобы выполнять вычисления вовремя. Затем вы можете переформатировать свои данные с помощью
format
.
Ответ №1:
Возможно, hms
пакет выполняет то, что ожидает операционная система. hms
реализует класс S3 для хранения и форматирования значений времени суток на основе класса ‘difftime’.
library(hms)
as.hms(df)
01:31:12.200000 01:31:14.560000 01:31:14.840000
Он может быть использован для расчета, например,
diff(as.hms(df))
00:00:02.360000 00:00:00.280000
Пожалуйста, обратите внимание, что методы print()
и format()
не принимают другие параметры и не соблюдают options(digits.secs = 2)
.
hms
Класс похож на lubridate
функцию as.hms()
, которая создает объект периода:
lubridate::hms(df)
[1] "1H 31M 12.2S" "1H 31M 14.56S" "1H 31M 14.84S"
Также можно выполнить арифметику:
diff(lubridate::hms(df))
[1] 2.36 0.28
Пожалуйста, имейте в виду, что внутреннее представление объектов time, date и datetime обычно основано на числовых типах, позволяющих выполнять вычисления. Внутреннее представление отличается от символьной строки при печати объекта.
ITime
Класс в data.table
пакете — это класс времени суток, который хранит целое количество секунд в сутках. Таким образом, он не может обрабатывать миллисекунды.