Какова наилучшая практика обработки времени в R?
Я работаю с набором данных опроса. Он имеет две строки vectors
, start
и finish
, указывающие время дня начала собеседования и завершение соответственно.
Это строки character
, которые выглядят так: "9:24 am"
, "12:35 pm"
и т.д. Я пытаюсь рассчитать продолжительность интервью на основе этих двух. Каков наилучший способ сделать это?
Я знаю, что для дат существует много classe
или function
, таких как as.date()
, as.date()
, chron()
или as.POSIXct()
. Поэтому я искал что-то вроде as.time()
, но не смог найти его. Должен ли я просто добавить дату составления и преобразовать все это в POSIX()
дату-время class
, а затем использовать difftime()
?
Какова наилучшая практика обработки времени в R
?
Ответы
Ответ 1
Вам нужно использовать strptime()
для преобразования строки в дату. Например:
strptime("9:24 am",format="%I:%M %p")
Затем вы можете брать различия, просто удаляя друг друга:
strptime("9:24 am",format="%I:%M %p")-strptime("12:14 am",format="%I:%M %p")
Time difference of 9.166667 hours
Вы можете сохранить это, а затем сделать as.numeric()
, если вам просто нужен номер, иначе вы можете обойти объекты времени.
Надеюсь, это поможет!
Ответ 2
один вариант - использовать регулярные выражения. если вы не знакомы с ними, они используются для анализа строк с использованием шаблонов. я бы исследовал регулярные выражения, а затем вот функции из r
надеюсь, что это поможет
Ответ 3
Лучшая практика - использование пакета lubridate
https://www.rdocumentation.org/packages/lubridate/versions/1.5.6/topics/hm
hm(c("09:10", "09:02", "1:10"))
## [1] "9H 10M 0S" "9H 2M 0S" "1H 10M 0S
Затем используйте difftime для разницы в форматах времени даты, созданных выше
https://stat.ethz.ch/R-manual/R-devel/library/base/html/difftime.html
difftime(time1, time2, tz,
units = c("auto", "secs", "mins", "hours",
"days", "weeks"))