2016-06-08 165 views
21

我尝试了很多方法无济于事。我有一个日期(YYYY-MM-DD)的数据,并试图按照月和年来计算,例如:MM-YYYY或YYYY-MM。从R的日期提取月份和年份

最后,我想它是这样的:

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

我这样做的绘制在一个月内赚取平均货币的希望,从众多的订单,过了一段时间。任何帮助,或正确的方向推动将不胜感激。

+0

的可能的复制[更改日期格式为 “%d /%米/%Y”](http://stackoverflow.com/questions/2832385/changing-date-format-to-dmy) – user5249203

+2

可能[从zoo :: yearmon对象中提取月份和年份]的副本(http://stackoverflow.com/questions/9749598/extract-month-and-year-from-a-zooyearmon-object) – Prradep

回答

38

这将使用指定的格式在您的data.frame中添加一个新列。

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

一个简单的例子:

dates <- "2004-02-06" 

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

侧面说明: 的data.table方法会非常快的情况下,你有一个大的数据集工作。

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

使用子串?

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