2014-01-14 280 views
3

我试图将01102013(2013年10月1日)格式的日期转换为实际的 R日期。将整数字符串日期转换为实际日期

我发现与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到 承认它,但我无法找到一种方法来做到这一点。

+0

也可以尝试:'日期< - 01102013'; 'lubridate :: DMY(日)' – rawr

回答

3

Lubridate为您完成此:

library(lubridate) 
dmy(01102013) 
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" 
2

@ JoshuaUlrich的答案是好的,但回答您的其他问题(“我怎么插入日期的各部分之间的分隔符?”)......(你还需要确保你做零填充从数字转换为字符时,作为乔什显示)

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