单位数月份格式

单位数月份格式

问题描述:

我有一个日期变量,包括月份和年份,其中月份是一个数字(例如,本月/年是'62017',但10月是'102017')。我需要最终的格式为'6/1/2017'。我曾尝试使用as.Date进行转换,但它不会工作,因为%m需要两位数字。单位数月份格式

我的解决方法是在'102'(十月),'112'(十一月)或'122'(十二月)开始的日期中添加前导零。我也有一些我不得不忽视的NA。代码:

index <- substr(ll$Maturity.Date,1,3) != 102 & substr(ll$Maturity.Date,1,3) != 112 & substr(ll$Maturity.Date,1,3) != 122 & !is.na(ll$Maturity.Date) 
ll$Maturity.Date[index] <- paste0(0,ll$Maturity.Date[index]) 

从这里,我可以根据需要转换为其他格式。但是,我想知道是否有更好的方法来实现硬编码,因为当使用90年代的历史数据或下一世纪的数据时,这些代码将会破坏,这两者都是未来的可能性。

+0

是如何编码的单个数字天? 2017年6月1日,是'6117'吗?或'60117'? – CPak

+0

没有编码的日子。完整的值是myyyy,例如6月份为'62017',11月份为'112017',1月份为'12017'。 –

+2

如果'nchar(date.field)== 5'然后将零粘贴到前面,您可以测试字符数而不是子字符串。 –

使用sprintf填充0可能是最简单的。这里是一个解决方案:

sprintf("%06.0f", as.numeric(temp)) 
[1] "062017" "102017" 

然后用paste0结合本加一天(1)和as.Date得到

as.Date(paste0(sprintf("%06.0f", as.numeric(temp)),"-1"), "%m%Y-%d") 
[1] "2017-06-01" "2017-10-01" 

数据

temp <- c("62017", "102017")