Converti 12 ore in 24 ore

Ho dati meteo orari. Ho visto gli esempi di funzioni da qui: http://casoilresource.lawr.ucdavis.edu/drupal/node/991

Sto modificando il codice per tenere conto dei dati dell’aeroporto, che ha un diverso tipo di URL. 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 cosa ho tentato: (vedo che usare solo “PM” non è abbastanza accurato perché qualsiasi momento tra le 12 e le 13 sarà distriggersto se passano attraverso questa 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?

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

O nel caso in cui non si desideri la data, qualcosa come: Sebbene dipenda dal tipo di class che si desidera per l’object.

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

dare un’occhiata a ?strptime .

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