2012-03-25 24 views
7

Ich habe stündliche Wetterdaten. Ich habe die Funktionsbeispiele von hier gesehen: http://casoilresource.lawr.ucdavis.edu/drupal/node/99112 Stunden in 24 Stunden umrechnen

Ich ändere den Code für Flughafendaten, die einen anderen URL-Typ hat. Ein weiteres Problem mit den Wetterdaten des Flughafens ist, dass die Zeitdaten im 12-Stunden-Format gespeichert werden. Hier ist ein Beispiel der Daten:

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 

Hier ist, was ich versucht: (Ich sehe, dass nur ‚PM‘ verwendet, ist nicht vorsichtig genug, weil alle Zeiten zwischen 12 und 13.00 Uhr wird ausgeschaltet sein, wenn sie durch diese gehen 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]) 

    } 
} 

Irgendwelche Hilfe?

Antwort

15

Würde strptime funktionieren?

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

Oder, falls Sie das Datum nicht wollen, so etwas wie: Obwohl es hängt davon ab, welche Art von Klasse würden Sie für das Objekt werden soll.

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

das Datum Problem ist eigentlich ziemlich groß. Ich möchte, dass die Datums-/Zeitinformation ein Objekt ist, das in ein Zoo-Objekt eingefügt werden kann, aber das Hauptziel der Funktion besteht darin, Daten für einen bestimmten Tag zurückzugeben. Wenn ich diese Datumsinformation verliere, die nicht in der Spalte zu Beginn gewährt wird, werde ich zukünftige Kopfschmerzen verursachen. Die Datumsinformationen werden vom Benutzer bereitgestellt, wenn sie einen Datumsbereich in die Anfangsfunktion eingeben. Für jeden Tag in diesem Bereich wird eine Website gelesen und anschließend werden die Daten bereinigt. Teil der Reinigung ist die Umstellung von 12 auf 24 Stunden. Danke wieder –

+0

'# convert Zeitspalte in richtig codierte Datum Zeit
' 'Daten $ TimeEST <- strptime (Daten $ TimeEST, Format = '% I:% M% p')'
'Daten $ TimeEST <- substr (Daten $ TimeEST, 11, 19) ' ' Daten $ TimeEST <- str_c (Datum, Daten $ TimeEST) ' ' Daten $ TimeEST <- as.POSIXlt (Daten $ TimeEST, Format = '% Y-% m- % d% H:% M:% S ') '@AndresT danke für die Vorschläge das ist, was ich benutzt habe, um meinen gewünschten Objekttyp zu bekommen. –

+0

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

3

einen Blick auf ?strptime.

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