2012-03-25 18 views
7

Ho dati orari orari. Ho visto gli esempi di funzione da qui: http://casoilresource.lawr.ucdavis.edu/drupal/node/991Converti 12 ore in 24 ore

Sto modificando il codice per tenere conto dei dati dell'aeroporto, che ha un tipo di URL diverso. Un altro problema con i dati meteorologici dell'aeroporto è che i dati temporali vengono salvati nel formato 12 ore. Ecco un esempio dei dati:

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 

Ecco quello che ho tentato: (vedo che utilizzando solo 'PM' non è abbastanza attento, perché eventuali volte tra il 12 e 01:00 sarà fuori se vanno attraverso questo 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]) 

    } 
} 

Qualsiasi aiuto?

risposta

15

strptime lavoro?

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") 

O nel caso in cui non si desidera la data, qualcosa come: anche se dipende che tipo di classe vorresti per l'oggetto.

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

il problema della data è in realtà piuttosto grande. Vorrei che le informazioni su data/ora fossero un oggetto che può essere inserito in un oggetto zoo, ma più grande di quello che l'obiettivo principale della funzione è restituire i dati per un giorno specifico. Se perdo queste informazioni sulla data, che non sono previste nella colonna per iniziare, causerò futuri mal di testa. Le informazioni sulla data vengono fornite dall'utente quando immettono un intervallo di date nella funzione iniziale. Per ogni giorno in tale intervallo viene letto un sito Web e quindi i dati vengono puliti. Parte della pulizia viene convertita da 12 a 24 ore. Grazie ancora –

+0

'# conversione colonna Ora in data di codifica corretta
' 'data $ TimeEST <- strptime (data $ TimeEST, formato = '% I:% M% p')'
'data $ TimeEST <- substr (dati $ TimeEST, 11, 19) ' ' data $ TimeEST <- str_c (data, data $ TimeEST) ' ' data $ TimeEST <- as.POSIXlt (dati $ TimeEST, formato = '% Y-% m- % d% H:% M:% S ') '@AndresT Grazie per i suggerimenti questo è quello che ho usato per ottenere il tipo di oggetto desiderato. –

+0

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

3

dare un'occhiata a ?strptime.

as.POSIXct(data$TimeEST, format='%I:%M %p') 
Problemi correlati