2017-04-13 1 views
3

Ich versuche, dass das Format "07,29,30" in ein Datumsformat mit as.Date() in R.Mit dem "Format" Argumente in as.Date()

(Anmerkung zu konvertieren die Zeichenfolge "mm, dd, yy", seinen 29. Juli 1930)

So habe ich den folgenden Code:

as.Date("07,29,30", format = "%m,%d,%y") 

Aber das Jahr, dass ich wieder zu bekommen ist 2030, nicht 1930. Wie kann ich R sagen, dass er den Wert in ein Jahrhundert zuvor umrechnen soll?

+2

sieh dir diese an: http://stackoverflow.com/questions/12323693/is-there-a-more-elegant-way-to-convert-two-digit-years-to-four-digit- Jahre mit – din

+1

Ich habe Rückblenden zu den Y2K-Tagen. –

Antwort

2

Als Jahreswerte zwischen 00 und 68 zu 20 für Jahrhundert codiert sind. Von strptime Dokumentation scheint es folgende ist der Grund dafür. .

„Jahr ohne Jahrhundert (00-99) Bei der Eingabe Wert 00-68 von 20 und 69 bis 99 von 19 vorangestellt -, dass das Verhalten von 2004 und 2008 POSIX-Standards spezifiziert ist, aber sie sagen auch "es wird erwartet, dass in eine zukünftige Version das Standardjahrhundert aus einem 2-stelligen Jahr abgeleitet wird ändern".

Sie können den folgenden Code verwenden, um ihn zu rekodieren.

d <- as.Date("07,29,30", format = "%m,%d,%y") 

> as.Date(ifelse(d > today(), format(d, "19%y-%m-%d"), format(d))) 
[1] "1930-07-29" 
2

ich sowieso setzen in werden:

# use this library 
library(lubridate) 

# convert to the format (your way or you acn use lubridate) 
dateconvert <- as.Date("07,29,30", format = "%m,%d,%y") 

# get the year 
inputYear <- year(dateconvert) 

# convert the year 
year(dateconvert) <- ifelse(inputYear > 2000, 1900 + (inputYear %% 100), inputYear) 
1

dieses Problem strtotime() verwenden zu lösen und date():

$originalDate = "2010-03-21"; 
$newDate = date("d-m-Y", strtotime($originalDate)); 
+0

meinst du strptime()? – MLavoie

1

Versuchen folgende: Format (as.Date ("07,29,30" format = "% m,% d% Y"), „19% y-% m-% d ")

Verwandte Themen