2017-08-01 68 views
0

我在格式化R中的日期列表時遇到了問題。在R中格式化的常規方法(如as.Date或as.POSixct)似乎不工作。格式化非常規日期

我在格式化日期:1012015

使用

as.POSIXct(as.character(data$Start_Date), format = "%m%d%Y") 

不給我一個錯誤,但我的返回日期

"0015-10-12"因爲一個月是不是一個兩位數字。 ?

有沒有辦法更改爲正確的日期格式該F

+1

是否有任何一般的假設,可向格式,如最後4位數字是始終年第2-4位爲月份和日期(如果有的話,是111 11月1日或1月第11) ? – platypus

+0

是的,最後4位數字始終是年份,前2-4位數字是月份和日期。數據是按照時間順序排列的,但我不確定R是否能夠對您的問題作出區分。 –

+1

_什麼是正確答案_ – rawr

回答

3

lubridate包可以在這方面幫助:

lubridate::mdy(1012015) 
[1] "2015-01-01" 

格式看上去模棱兩可,但OP提供了兩個提示:

  • 他在自己的企圖使用format = "%m%d%Y"
  • 他認爲這個問題是因爲月份是不是一個兩位數字
0

這僅使用基地R.的%08d指定爲數字格式化爲8個字符,在這種情況下使用0填充給出"01012015"

as.POSIXct(sprintf("%08d", 1012015), format = "%m%d%Y") 
## [1] "2015-01-01 EST" 

請注意,如果你沒有任何時/分/秒,這將是不容易出錯使用"Date"類,因爲微妙隨後時間段錯誤的可能性被消除。

as.Date(sprintf("%08d", 1012015), format = "%m%d%Y") 
## [1] "2015-01-01"