将整数字符串日期转换为实际日期

时间:2014-01-14 15:19:04

标签: string r date integer format

我正试图以01102013(2013年10月1日)的格式将日期改为实际 R date。

我发现了一个与C#有关的类似问题但没有R的解决方案。

How to convert a date of integers to a formated date string (i.e. 2012009 to 2/01/2009)

我尝试了as.Date(date, format=%d%m%Y)的明显方式,但它提出了错误 原点丢失了(因为它是从日期开始读取整数天数,但实际日期只是没有破折号或斜线)。

我还试图找到一种方法来插入 - 或\之间的数字来尝试获取R 认识到它,但我找不到办法做到这一点。

3 个答案:

答案 0 :(得分:5)

如果要将其解析为字符串,则需要先将其转换为字符。您还需要在格式字符串周围加上引号。

> date <- 01102013
> date
# [1] 1102013
# you need leading zeros, so you can't just use as.character()
> as.Date(sprintf("%08d", date), format="%d%m%Y")
# [1] "2013-10-01"

答案 1 :(得分:4)

Lubridate为您做到了这一点:

library(lubridate)
dmy(01102013)

答案 2 :(得分:2)

@ JoshuaUlrich的答案很好,但回答你的另一个问题(“如何在日期的各个部分之间插入分隔符?”)...(你仍然需要确保在从数字转换时进行零填充像Josh所说的那样的角色)

cdate <- sprintf("%08d",date)
datestr <- paste(substr(cdate,1,2),
         substr(cdate,3,4),substr(cdate,5,8),sep="/")

as.Date(datestr,format="%d/%m/%Y")
相关问题