我正试图以01102013(2013年10月1日)的格式将日期改为实际 R date。
我发现了一个与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 :(得分: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"
答案 1 :(得分:4)
Lubridate为您做到了这一点:
library(lubridate)
dmy(01102013)
答案 2 :(得分:2)
@ JoshuaUlrich的答案很好,但回答你的另一个问题(“如何在日期的各个部分之间插入分隔符?”)...(你仍然需要确保在从数字转换时进行零填充像Josh所说的那样的角色)
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")