2016-06-08 29 views
21

Kullanıma hazır olmayan birçok yöntemi denedim. Verilerim bir tarih (YYYY-AA-GG) var ve sadece ay ve yıl cinsinden elde etmeye çalışıyorum, örneğin: MM-YYYY veya YYYY-MM.Ay ve Aydan Ay Ay R

Sonuçta, böyle bakmak için istiyorum:

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

Ben bir süre boyunca, siparişlerin bir dizi, bir ay içinde ortalama olarak kazanılan parayı komplo umuduyla yapıyorum. Herhangi bir yardım ya da doğru yönde bir itme çok takdir edilecektir.

+0

olası çift [tarih biçimini değiştirme için "% d /% m /% Y"] (http://stackoverflow.com/questions/2832385/changing-date-format-to-dmy) – user5249203

+2

olası [Bir hayvanat bahçesinden ay ve yıl ayıkla :: yearmon nesnesi] kopyası (http://stackoverflow.com/questions/9749598/extract-month-and-year-from-a-zooyearmon-object) – Prradep

cevap

38

Bu, belirtilen biçimiyle data.frame ürününüze yeni bir sütun ekler.

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

basit bir örnek:

dates <- "2004-02-06" 

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

yan not: data.table yaklaşım olabilir oldukça hızlı durumunda büyük bir veri kümesi ile birlikte çalışıyoruz.

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

arasında

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