Какова лучшая практика обработки времени в R? - PullRequest
14 голосов
/ 24 февраля 2009

Я работаю с набором данных опроса. В нем есть две строки 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?

Ответы [ 3 ]

15 голосов
/ 26 февраля 2009

Вам необходимо использовать 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(), если вы просто хотите получить номер, иначе вы можете передавать объекты времени.

Надеюсь, это поможет!

1 голос
/ 25 февраля 2009

один из вариантов - использовать регулярные выражения. если вы не знакомы с ними, они используются для анализа строк с использованием шаблонов. я бы исследовал регулярные выражения и затем вот функции в r

надеюсь, это поможет

0 голосов
/ 27 июня 2017

Лучшая практика - использование пакета 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"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...