2016-11-29 2 views
-1

Ich habe eine Datei mit einer Datumszeichenfolge in Form von dd-mmm-yyyy hh:mm:ss AM/PM importiert.Text konvertieren TT-MMM-JJJJ hh.mm.ssss AM/PM nach Datum

  1. Ich kämpfe R-Code zu finden, die diese bisher Zeitformat umwandelt, wo das Zeitteil 24-Stunden-Format ist, und
  2. wie kann ich eine neue Variable nur mit dem Datum erstellt werden.

als Beispiel für einen der Termine siehe unten:
26-AUG-2016 08.48.43.65483000 AM

Es scheint, dass Sekunden haben auch Dezimalstellen.

R Version 3.3.1

+0

Mögliche Duplikat http://stackoverflow.com/questions/9864659/convert-1 2hour-to-24hour-time, http://stackoverflow.com/questions/29833538/convert-12-hour-character-time-to-24-hour, – akrun

Antwort

2

Wir strptime mit der richtigen Format

strptime("26-AUG-2016 08.48.43.65483000 AM", "%d-%b-%Y %H.%M.%OS %p") 
#[1] "2016-08-26 08:48:43 IST" 

verwenden, und wenn Sie nur das Datum möchten, können wir es wickeln in format

format(strptime("26-AUG-2016 08.48.43.65483000 AM", "%d-%b-%Y %H.%M.%OS %p"), 
                    "%d-%m-%Y") 
#[1] "26-08-2016" 

und zu erhalten nur die Zeit,

format(strptime("26-AUG-2016 08.48.43.65483000 AM", "%d-%b-%Y %I.%M.%OS %p"), 
                    "%H:%M:%S") 
#[1] "08:48:43" 

format(strptime("26-AUG-2016 08.48.43.65483000 PM", "%d-%b-%Y %I.%M.%OS %p"), 
                    "%H:%M:%S") 
#[1] "20:48:43" 
+0

ist die 0S eine Null oder das Zeichen o – Manfred

+0

@ Manfred es ist Charakter O und nicht Null. –

+0

Ich habe einen Dataset-Aufruf roapr16. Darin gibt es die Spalte sys_date. Wenn ich den Kommentar roapr16 $ sys_date <- strptime ("roapr16 $ sys_date", "% d-% b-% Y% H.% M.% OS% p") liefere bekomme ich einen Fehler. Das System hängt buchstäblich – Manfred

0

Ich würde vorschlagen, die Verwendung des Pakets lubridate machen:

[1] "2013-01-22 23:00:00 UTC" 

Das zurückgegebene Objekt ist die "POSIXct"/"POSIXt" Klassen so sollten Sie in der Lage sein es, wenn Sie bequem zu manipulieren:

lubridate::mdy_hms("01/22/2013 11:00:00 PM") 

diese produzieren würde wollen Daten oder Extrakt Zeit zu bekommen:

>> as.Date(lubridate::mdy_hms("01/22/2013 11:00:00 PM")) 
[1] "2013-01-22" 
+0

Danke. Das Datum befindet sich in einer Spalte im Datensatz SYS_DATE. Wäre der Befehl dann roapr $ newdate <- as.Date (lubridate :: mdy_hms (roapr $ SYS_DATE)) – Manfred

+0

@Manfred Ja, das stimmt. – Konrad

+0

Beim Ausführen dieses Befehls erhalte ich die folgende Fehlermeldung: Alle Formate konnten nicht analysiert werden. Keine Formate gefunden – Manfred

Verwandte Themen