单个数字月份格式

时间:2017-06-19 15:17:54

标签: r date formatting

我有一个日期变量,其中包括月份和月份,其中月份是一位数(例如,这个月/年是'62017',但十月是'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年代的历史数据或下个世纪的数据时会破裂,这两种情况都是未来的可能性。

1 个答案:

答案 0 :(得分:2)

使用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")