2016-06-08 17 views
21

Próbowałem wielu metod bezskutecznie. Mam dane pod względem daty (RRRR-MM-DD) i staram się uzyskać dane dotyczące tylko miesiąca i roku, takie jak: MM-RRRR lub RRRR-MM.Wyodrębnij miesiąc i rok od daty w R

Docelowo chciałbym go wyglądać następująco:

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

Robię to w nadziei kreślenia zarobione pieniądze średnio w miesiącu, od liczby zleceń, w okresie czasu. Każda pomoc lub pchnięcie we właściwym kierunku będą mile widziane.

+0

Możliwe duplikat [Zmiana formatu daty "% d /% m /% T"] (http://stackoverflow.com/questions/2832385/changing-date-format-to-dmy) – user5249203

+2

Możliwa duplikat [Wyodrębnij miesiąc i rok z obiektu zoo :: yearmon] (http://stackoverflow.com/questions/9749598/extract-month-and-year-from-a-zooyearmon-object) – Prradep

Odpowiedz

38

Spowoduje to dodanie nowej kolumny do Twojego data.frame w określonym formacie.

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")) 

prosty przykład:

dates <- "2004-02-06" 

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

dygresja: podejście data.table może być dość szybciej w przypadku, gdy pracujemy z dużym zbiorze danych.

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

Użyj podciągu?

d = "2004-02-06" 
substr(d,0,7) 
>"2004-02" 
Powiązane problemy