So ändern Sie mehrere Datum-Formate in der gleichen Spalte
Was ich habe, so weit ist ein dataframe Spalte mit Datumsangaben in verschiedenen Zeichenformate. Ein paar scheinen in der %d.%m.%Y
Muster, einige in %m/%d/%Y
:
data$initialDiagnose = as.character(data$initialDiagnose)
data$initialDiagnose[1:10]
[1] "14.01.2009" "9/22/2005" "4/21/2010" "28.01.2010" "09.01.2009" "3/28/2005" "04.01.2005" "04.01.2005" "9/17/2010" "03.01.2010"
Möchte ich Sie als Date() in ein format, aber R weigert sich natürlich.
So versuchte ich zunächst, Sie zu ändern, indem Sie das Trennzeichen:
data$initialDiagnose[grep('/', data$initialDiagnose)] = as.character.Date(data$initialDiagnose[grep('/', data$initialDiagnose)], format = '%m/%d/%Y')
Analog zu der '.' Daten. Aber es hat nicht funktioniert.
Wie kann ich diese ändern alle auf ein format, dass ich mit Ihnen arbeiten kann?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Additionnaly hier ist der vorhergehenden Methode angepasst an eine situation, in der Sie drei (oder mehr) verschiedene Formate:
Ich mag lubridate für seine Benutzerfreundlichkeit:
Seit MattBagg Antwort 2012
lubridate
hat dieparse_date_time
Funktion, die ausgelegt ist für genau diese situation und dieses problem beheben können, in einer einzigen Zeile:Den
orders=
argument ist ein character-Vektor mit den möglichen Datum-Zeit-Analyse-Formate in der Reihenfolge, wie Sie getestet werden sollte. Mit der Angabec('mdy', 'dmy')
, lubridate wird versuchen zu analysieren, alle Zeichenfolgen alsMonth, Date, Year
- format. Wenn es das nicht kann, erfolgreich (zum Beispiel das Datum14.01.2009
wird nicht funktionieren, da es keine 14 Monate), wird die nächste in der Liste, bis alle Zeichenfolgen analysiert werden, oder alle Aufträge erschöpft.