2017-09-01 1 views
1

Ich habe eine Spalte von Daten, die als character Werte eingelesen wurden (ja, sie sollen gleich sein):Wie Datumsformat: JJJJ/MM/DD ändern, um TT/MM/YYYY

str(df$date) 

$ date : chr "30/08/2017" "30/08/2017" "30/08/2017" "30/08/2017" 

ich konvertieren dann die Werte in Date Format:

str(df$date) 

$ date : Date, format: "2017-08-30" "2017-08-30" "2017-08-30" 

Das Problem ist, dass, egal welche Methode ich verwenden möchten, die sich daraus ergebenden Termine immer in YYYY/MM/DD Format sind, was nicht, was ich will; Sie sollten im Format DD/MM/YYYY sein.

Ich versuche:

df$date <- as.Date(df$date, format = "%d/%m/%Y") 
df$date <- strptime(df$date, format = "%d/%m/%Y") 
df$date <- as.POSIXct(df$date, format = "%d/%m/%Y") 

und sie alle das gleiche Format produzieren.

Ich habe zahlreiche ähnliche Stack Overflow Posts sowie einige Anleitungen gelesen und habe Dinge wie das Abrufen und Einstellen meines Systemgebiets (Großbritannien) versucht und alles ist in dieser Hinsicht korrekt.

Wohin gehe ich falsch?

+0

Ich glaube, Sie wollen 'strftime()', 'nicht strptime()'. R kombiniert die Dokumentation für diese Funktionen, so dass es ein wenig verwirrend sein kann. – jdobres

+0

@jdobres DAS IST ES! – MusTheDataGuy

+0

Großartig. Ich habe den Kommentar in eine Antwort für jeden mit einem ähnlichen Problem konkretisiert. – jdobres

Antwort

2

Ich versuche:

df$date <- as.Date(df$date, format = "%d/%m/%Y") 
df$date <- strptime(df$date, format = "%d/%m/%Y") 
df$date <- as.POSIXct(df$date, format = "%d/%m/%Y") 

und sie alle das gleiche Format produzieren.

R hat zwei sehr ähnlich benannten Funktionen: strptime, die von Zeichenketten Datum Daten umwandelt, und strftime, die Daten zu formatierten Strings umwandelt. Erschwerend kommt hinzu, dass die Dokumentation für diese beiden Funktionen kombiniert ist, so dass es sehr schwierig sein kann, ihre Verwendung aufrecht zu erhalten. Sie möchten strftime, in diesem Fall.

+1

Ich fügte das Zitat von op hinzu, weil ich bei der ersten Lesung gedacht hatte, dass es die Frage nicht wirklich beantwortete. – Frank

1

Sie können auch format verwenden:

date = c("30/08/2017", "30/08/2017", "30/08/2017", "30/08/2017") 
date <- as.Date(date, format = "%d/%m/%Y") 
# > date 
# [1] "2017-08-30" "2017-08-30" "2017-08-30" "2017-08-30" 

date = format(date, "%m/%d/%Y") 
# > date 
# [1] "08/30/2017" "08/30/2017" "08/30/2017" "08/30/2017" 

verwandelt sich in character Klasse:

# > class(date) 
# [1] "character"