2016-03-25 15 views
0

I strptime bin mit Datum zu extrahieren und das Ergebnis ist ein falsche Jahr Wo der Fehler im Code unten ist:Fehler in den richtigen Zeitpunkt immer in R mit strptime

strptime('8/29/2013 14:13', "%m/%d/%y") 
[1] "2020-08-29 PDT" 

Was die anderen Möglichkeiten, um Datum und Uhrzeit als separate Spalten zu extrahieren. Die Daten, die ich habe, ist in diesem Format - 8/29/2013 14:13 Ich möchte dies in zwei Spalten teilen, eine ist 8/29/2013 und die andere ist 14:13.

Antwort

2

Sie haben ein vierstelliges Jahr, so dass Sie

strptime('8/29/2013 14:13', "%m/%d/%Y") 
[1] "2013-08-29 CEST" 

Haben Sie wirklich wollen, Daten und Zeit in separaten Spalten verwenden% Y müssen? Es ist normalerweise viel einfacher, mit einem einzelnen Datum-Zeit-Objekt umzugehen.

1

Hier ist eine Möglichkeit, Zeit und Datum von der Zeichenfolge zu trennen.

Zur Erleichterung konnten wir zuerst die Zeichenfolge in ein POSIX-Objekt konvertieren:

datetime <- '8/29/2013 14:13' 
datetime.P <- as.POSIXct(datetime, format='%m/%d/%Y %H:%M') 

Dann können wir as.Date() verwenden das Datum von diesem Objekt zu extrahieren und verwenden format() es im gewünschten Format angezeigt werden:

format(as.Date(datetime.P),"%m/%d/%Y") 
#[1] "08/29/2013" 

die Zeit zu speichern separat wir verwenden können, beispielsweise die strftime() Funktion:

strftime(datetime.P, '%H:%M') 
#[1] "14:13" 

Die letzte Funktion (strftime()) ist nicht vektorisiert, was bedeutet, dass wenn ein Vektor datetime mehrere Zeichenketten mit Datum und Uhrzeit im Format wie im OP beschrieben verarbeitet, sollte er in eine Schleife wie sapply() gehüllt werden um die Zeit von jeder Zeichenfolge zu extrahieren.


Beispiel

datetime <- c('8/29/2013 14:13', '9/15/2014 12:03') 
datetime.P <- as.POSIXct(datetime, format='%m/%d/%Y %H:%M') 
format(as.Date(datetime.P),"%m/%d/%Y") 
#[1] "08/29/2013" "09/15/2014" 
sapply(datetime.P, strftime, '%H:%M') 
#[1] "14:13" "12:03" 

Hoffnung, das hilft.