r:将字符串转换为日期

时间:2016-08-18 10:39:55

标签: r as.date

我有一个这样的字符串:

201601 
201603 
201604 
201606 
201501

我想转换为日期,就像这样:

2016-01
2016-03
2016-04
2016-06
2015-01

我试过了:df$month_key=as.Date(df$month_key,format="YYYYmm") 但它要求起源,我们不需要关心。 有没有办法做到这一点,或者可能在整个列中的字符4和5之间添加一个短划线? 感谢

1 个答案:

答案 0 :(得分:7)

我们可以使用sub在前4个字符和下一个字符之间创建-。匹配四个字符(.{4}),将其放入捕获组({{ 1}}),然后是另一个捕获组中的后两个字符,将其替换为这些组的反向引用((...)\\1),并在其间添加\\2。< / p>

-

另一个选项是df1$Col <- sub('(.{4})(.{2})', "\\1-\\2", df1$month_key) df1$Col #[1] "2016-01" "2016-03" "2016-04" "2016-06" "2015-01"

substr/paste

但是,with(df1, paste(substr(month_key, 1,4), substr(month_key, 5, 6), sep="-")) 课程也有一天。因此,要将原始列转换为“日期”,我们可以在任何一天附加,可能使用Date并使用01中的格式

as.Date

数据

as.Date(paste0(df1$month_key, "01"), "%Y%m%d")