2016-06-06 14 views
0

Ich habe einen Datenrahmen, in dem Daten in einer Spalte gespeichert sind. Aber das Problem ist, dass einige Werte im Format% d-% m-% y gespeichert werden, während die anderen im Format% Y-% m-% d gespeichert werden. Ich möchte alle Werte in einem Format, so habe ich versucht,Format Daten in R

df$dateCol= as.Date(df$dateCol, format = "%d-%m-%y") 

Aber es hat nicht die Werte formatiert richtig

Was ist der richtige Weg, um dieses Problem zu lösen?

+1

Sie mehrere Formate in 'as.Date verwenden können()', aber * lubridate * macht ein Vielfaches ein wenig einfacher Handhabung. –

+0

Die Klasse "Date" (wie die Datetime-Klassen) hat nur eine Möglichkeit, Werte zu speichern. Der Parameter 'format' dient zum Konvertieren in dieses Format - nicht dafür, wie er gespeichert wird, sobald er vorhanden ist. Sie können sie als Strings in jedem Format ausgeben, wenn Sie möchten, aber es ist am besten, alles in dieselbe Klasse zu legen und damit zu arbeiten. – alistaire

Antwort

2

Sie könnten eine einfache ifelse() Überprüfung tun, wo die Striche - sind:

x <- c("07-06-2016","2016-06-07","2015-01-01") 
as.Date(x, ifelse(substr(x, 5, 5)=="-", "%Y-%m-%d", "%d-%m-%Y")) 
#[1] "2016-06-07" "2016-06-07" "2015-01-01"