2009-02-24 35 views
14

Pracuję z zestawem danych ankiety. Ma dwa ciągi: vectors, start i finish, wskazując czas dnia, w którym rozmowa została uruchomiona, i odpowiednio zakończył.jaka jest najlepsza praktyka obsługi czasu w R?

Są to ciągi, które wyglądają tak: "9:24 am", "12:35 pm" i tak dalej. Próbuję obliczyć czas trwania wywiadu na podstawie tych dwóch. Jaki jest najlepszy sposób na zrobienie tego?

wiem, że dla dat, istnieje wiele classe S lub function jest jak as.date(), as.Date(), chron() lub as.POSIXct(). Szukałem czegoś takiego jak as.time(), ale nie mogłem go znaleźć. Czy powinienem po prostu dołączyć wymyśloną datę i przekonwertować całość na POSIX() datę-czasu, a następnie użyć difftime()?

Jaka jest najlepsza praktyka obsługi czasu w R?

Odpowiedz

15

Trzeba użyć strptime() przekonwertować ciąg do daty. Na przykład:

strptime("9:24 am",format="%I:%M %p") 

Następnie można wziąć różnice tylko w drodze jednego od drugiego:

strptime("9:24 am",format="%I:%M %p")-strptime("12:14 am",format="%I:%M %p") 
Time difference of 9.166667 hours 

można przechowywać to i wtedy zrobić as.numeric() jeśli chcesz tylko numer na zewnątrz, w przeciwnym razie może ominąć obiekty czasu.

Mam nadzieję, że to pomoże!

+0

uaktualnionym lubridate –

1

Jedną z opcji jest użycie wyrażeń regularnych. jeśli ich nie znasz, są one używane do analizowania łańcuchów za pomocą wzorców. Chciałbym zbadać wyrażeń regularnych, a następnie here are the functions in r

nadzieję, że pomoże