Какова наилучшая практика обработки времени в 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"))