2016-06-08 75 views
21

Ho provato un numero di metodi inutilmente. Ho dati in termini di data (AAAA-MM-GG) e sto cercando di ottenere in termini di solo il mese e l'anno, ad esempio: MM-AAAA o AAAA-MM.Estrarre il mese e l'anno dalla data in R

In definitiva, mi piacerebbe assomigliare a questo:

ID Date   Month_Yr 
1  2004-02-06 2004-02 
2  2006-03-14 2006-03 
3  2007-07-16 2007-07 
... ...   ... 

sto facendo questo nella speranza di tracciare soldi guadagnati in media in un mese, da un certo numero di ordini, per un periodo di tempo. Qualsiasi aiuto o spinta nella giusta direzione sarebbe molto apprezzato.

+0

Eventuali duplicati di [Modifica formato della data a "% d /% m /% Y"] (http://stackoverflow.com/questions/2832385/changing-date-format-to-dmy) – user5249203

+2

Possibile duplicato di [Estrai mese e anno da uno zoo :: yearmon object] (http://stackoverflow.com/questions/9749598/extract-month-and-year-from-a-zooyearmon-object) – Prradep

risposta

38

Questo aggiungerà una nuova colonna al tuo data.frame con il formato specificato.

df$Month_Yr <- format(as.Date(df$Date), "%Y-%m") 

df 
#> ID  Date Month_Yr 
#> 1 1 2004-02-06 2004-02 
#> 2 2 2006-03-14 2006-03 
#> 3 3 2007-07-16 2007-07 

# your data sample 
    df <- data.frame(ID=1:3,Date = c("2004-02-06" , "2006-03-14" , "2007-07-16")) 

un semplice esempio:

dates <- "2004-02-06" 

format(as.Date(dates), "%Y-%m") 
> "2004-02" 

lato nota: l'approccio data.table può essere molto più veloce nel caso in cui si sta lavorando con un grande insieme di dati.

library(data.table) 
setDT(df)[, Month_Yr := format(as.Date(Date), "%Y-%m") ] 
2

Utilizzare la sottostringa?

d = "2004-02-06" 
substr(d,0,7) 
>"2004-02" 
Problemi correlati