2012-04-05 56 views
5

道歉的简单问题,但我找不到这种类型的日期的帮助。日期形式:20120405

2012年4月5日被保存为数字为“20120405”

我如何转换这种价值观的载体转化为可用的日期?

回答

5

你只需要as.Date功能:

R> x = "20120405" 
R> as.Date(x, "%Y%m%d") 
[1] "2012-04-05" 

看帮助文件:?as.Date,但本质上

  • %Y意味着今年在形式2012,使用%y12
  • %m是月份。
  • %d当天。

如果您的日期有分隔符,比如说2012-04-05,那么请使用类似于:%Y-%m-%d。或者,你可以使用:

R> strptime(x, "%Y%m%d") 
[1] "2012-04-05" 

特别是,你可以通过日期的矢量这些功能,所以:

R> y = c("20120405", "20121212") 
R> as.Date(y, "%Y%m%d") 
[1] "2012-04-05" "2012-12-12" 
+0

谢谢!并感谢所有! – user1314736 2012-04-05 08:51:22

5

这样,

(foo <- as.Date("20120405", "%Y%m%d")) 
# "2012-04-05" 

,也许你想format可以打印出月份

format(foo, "%Y %b %d") 
# "2012 Apr 05" 

你可以看看this page

3

随着strptime,你可以将其转换为POSIXlt类以及as.Date您可以使用格式"%Y%m%d"其转换为Date类:

strptime("20120405",format="%Y%m%d") 
[1] "2012-04-05" 

as.Date("20120405",format="%Y%m%d") 
[1] "2012-04-05" 

编辑:

如果您的字符为"20120405"或数字为20120405,则不太清楚。在后一种情况下,你必须首先转换为字符与as.character(20120405)

+0

谢谢!这是我认为造成问题的数字。 – user1314736 2012-04-05 08:50:05

2

您也可以使用lubridate包:

library(lubridate) 
ymd("20120405")