【发布时间】:2017-06-19 15:17:54
【问题描述】:
我有一个包含月份和年份的日期变量,其中月份是个位数(例如,这个月/年是“62017”,但 10 月是“102017”)。我需要最终格式为“2017 年 6 月 1 日”。我曾尝试使用 as.Date 进行转换,但它不起作用,因为 %m 需要两位数。
我的解决方法是在不以“102”(10 月)、“112”(11 月)或“122”(12 月)开头的日期前添加前导零。我也有一些我不得不忽略的 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 年代的历史数据或下世纪的数据时,这种代码会被破坏,这两者都是未来的可能性。
【问题讨论】:
-
个位数天数如何编码? 2017 年 6 月 1 日,是“6117”吗?还是“60117”?
-
没有天数编码。完整的价值是 myyyy 例如“62017”表示 6 月,“112017”表示 11 月,“12017”表示 1 月。
-
如果
nchar(date.field) == 5则可以测试字符数而不是子字符串,然后将零粘贴到前面。 -
您是否需要将最终日期格式设为
6/1/2017?下面的答案没有给你这种格式...
标签: r date formatting