2012-03-25 11 views
7

Mam godzinowe dane pogodowe. Widziałem tutaj przykłady funkcji: http://casoilresource.lawr.ucdavis.edu/drupal/node/991Konwersja 12-godzinna do 24-godzinna

Zmieniam kod, aby uwzględniał dane portu lotniczego, który ma inny typ adresu URL. Inną kwestią związaną z danymi pogodowymi lotniska jest to, że dane czasu są zapisywane w formacie 12-godzinnym. Oto przykład danych:

14 10:43 AM 
15 10:54 AM 
16 11:54 AM 
17 12:07 PM 
18 12:15 PM 
19 12:54 PM 
20 1:54 PM 
21 2:54 PM 

oto co próbowałem: (widzę, że używając tylko „PM” nie jest na tyle ostrożny, ponieważ wszelkie czasy między 12 i 1 po południu będzie wyłączona, jeśli przez to przejść alg)

date<-Sys.Date() 


data$TimeEST<-strsplit(data$TimeEST, ' ') 
for (x in 1:35){ 
    if('AM' %in% data$TimeEST[[x]]){ 
     gsub('AM','',data$TimeEST[[x]]) 
     data$TimeEST[[x]]<-str_trim(data$TimeEST[[x]]) 
     data$TimeEST[[x]]<-str_c(date,' ',data$TimeEST[x],':',data$TimeEST[2]) 
    } 
    else if('PM' %in% data$TimeEST[[x]]){ 
     data$TimeEST[[x]]<-gsub('PM', '',data$TimeEST[[x]]) 
     data$TimeEST[[x]]<-strsplit(data$TimeEST[[x]], ':') 
     data$TimeEST[[x]][[1]][1]<-as.integer(data$TimeEST[[x]][[1]][1])+12 
     data$TimeEST[[x]]<-str_trim(data$TimeEST[[x]][[1]]) 
     data$TimeEST[[x]]<-str_c(date, " ", data$TimeEST[[x]][1],':',data$TimeEST[[x]][2]) 

    } 
} 

Każda pomoc?

Odpowiedz

15

Czy pracowałoby się strptime?

df2= structure(c("10:43 AM", "10:54 AM", "11:54 AM", "12:07 PM", "12:15 PM", 
      "12:54 PM", "1:54 PM", "2:54 PM"), .Dim = c(8L, 1L)) 



strptime(df2, "%I:%M %p") 

lub w przypadku nie chcesz datę, coś jak: Chociaż to zależy, jaki rodzaj klasy co chcesz dla obiektu.

substr(strptime(df2, "%I:%M %p"),11,19) 
+0

data wydania jest raczej dość duża. Chciałbym, aby informacje o dacie/czasie były obiektem, który można umieścić w obiekcie zoo, ale większy niż główny cel tej funkcji to zwrócenie danych dla określonego dnia. Jeśli utracę te informacje o dacie, których przyznanie nie znajduje się w kolumnie, zacznę powodować przyszłe bóle głowy. Informacje o dacie są dostarczane przez użytkownika, gdy wprowadzają zakres dat do funkcji początkowej. Dla każdego dnia w tym zakresie odczytywana jest strona internetowa, a następnie dane są czyszczone. Część czyszczenia zmienia się z 12 na 24 godziny. Jeszcze raz dziękuję –

+0

'# Konwertuj kolumnę czasu na odpowiednio zakodowany czas daty
' $ $ TimeEST <- strptime (dane $ TimeEST, format = '% I:% M% p') '
' dane $ TimeEST <- substr (data $ TimeEST, 11, 19) ' ' data $ TimeEST <- str_c (data, dane $ TimeEST) ' ' data $ TimeEST <- as.POSIXlt (dane $ TimeEST, format = '% Y-% m- % d% H:% M:% S ') '@AndresT dzięki za sugestie, to jest to, czego użyłem do uzyskania pożądanego typu obiektu. –

+0

Lub 'format (strptime (df2,"% I:% M% p "),"% T ")' –