2014-01-14 489 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")