2016-04-19 22 views
1

Ich habe ein ganz einfaches Problem, das ich nirgendwo hier gefunden habe.Formatieren von Daten mit nur Monat und Jahr in R

Ich habe Datumsformat:

times = c("Dec_2011" , "July_2011", "Dec_2010" ,"July_2010" , "Dec_2009" , "July_2009", "Dec_2008" , 
        "July_2008" ,"Dec_2007" , "July_2007", "Dec_2006" , "July_2006" ,"Dec_2005" , "July_2005", 
        "Dec_2004" , "July_2004" ,"Dec_2003" , "July_2003", "Dec_2002" , "July_2002", "Dec_2001" , 
        "July_2001", "Dec_2000" , "July_2000") 

Wie kann ich diese in das Datumsformat erhalten:

31-07-2000, 31-07-2001, etc... 
31-12-2000, 31-12-2001, etc... 

Ich habe versucht:

times <- format(as.Date(time, "%B_%Y") 
times 
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 


times <- format(as.Date(time, "%B_%Y), "31-%m-%Y) 
times 
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 

times <- as.Date(paste("31", times, sep="-"), "%d-%m-%Y") 
times 
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 

times <- format(as.Date(time, "%b_%Y"), "31-%m-%Y") 
# NA 

Ich bin mir nicht ganz sicher, wie geht es weiter?

Antwort

1

Wenn wir 31 wie am ersten Tag für alle Elemente benötigen, verwenden paste 31 zu verbinden, um Date Klasse umwandeln und das gewünschte Format mit format bekommen.

format(as.Date(paste(times, "31", sep="_"), "%b_%Y_%d"), "%d-%m-%Y") 
#[1] "31-12-2011" "31-07-2011" "31-12-2010" "31-07-2010" "31-12-2009" "31-07-2009" "31-12-2008" "31-07-2008" "31-12-2007" "31-07-2007" "31-12-2006" 
#[12] "31-07-2006" "31-12-2005" "31-07-2005" "31-12-2004" "31-07-2004" "31-12-2003" "31-07-2003" "31-12-2002" "31-07-2002" "31-12-2001" "31-07-2001" 
#[23] "31-12-2000" "31-07-2000" 

Statt manuell paste 31 ing, können wir dies von zoo mit as.yearmon automatisieren. Der Vorteil ist, dass wir für Monate, die weniger als 31 Tage haben, den letzten Tag bekommen.

library(zoo) 
format(as.Date(as.yearmon(times, "%b_%Y"), frac=1), "%d-%m-%Y") 
#[1] "31-12-2011" "31-07-2011" "31-12-2010" "31-07-2010" "31-12-2009" "31-07-2009" "31-12-2008" "31-07-2008" "31-12-2007" "31-07-2007" "31-12-2006" 
#[12] "31-07-2006" "31-12-2005" "31-07-2005" "31-12-2004" "31-07-2004" "31-12-2003" "31-07-2003" "31-12-2002" "31-07-2002" "31-12-2001" "31-07-2001" 
#[23] "31-12-2000" "31-07-2000" 
Verwandte Themen