2016-06-08 24 views
21

Tôi đã thử một số phương pháp không có kết quả. Tôi có dữ liệu về một ngày (YYYY-MM-DD) và tôi đang cố gắng để có được chỉ trong tháng và năm, chẳng hạn như: MM-YYYY hoặc YYYY-MM.Trích xuất Tháng và Năm Từ Ngày theo R

Cuối cùng, tôi muốn nó trông như thế này:

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

tôi đang làm điều này với hy vọng âm mưu tiền kiếm được trung bình trong một tháng, từ một số đơn đặt hàng, trong một khoảng thời gian. Bất kỳ sự giúp đỡ nào, hoặc một sự thúc đẩy đúng hướng sẽ được nhiều người đánh giá cao.

+0

có thể trùng lặp của [Thay đổi định dạng ngày tháng để "% d /% m /% Y"] (http://stackoverflow.com/questions/2832385/changing-date-format-to-dmy) – user5249203

+2

thể trùng lặp của [Trích xuất tháng và năm từ một sở thú :: yearmon object] (http://stackoverflow.com/questions/9749598/extract-month-and-year-from-a-zooyearmon-object) – Prradep

Trả lời

38

Điều này sẽ thêm một cột mới vào data.frame của bạn với định dạng được chỉ định.

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

một ví dụ đơn giản:

dates <- "2004-02-06" 

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

mặt lưu ý: cách tiếp cận data.table có thể khá nhanh trong trường hợp bạn đang làm việc với một tập dữ liệu lớn.

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

Sử dụng chuỗi con?

d = "2004-02-06" 
substr(d,0,7) 
>"2004-02" 
Các vấn đề liên quan