2017-08-01 79 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"