首页 > 解决方案 > 在R中导出数据时如何将Year-Mon的字符串转换为正确的日期格式?

问题描述

当我将 R 中的数据导出为 csv 时,我试图确保 As_of_Dt 正确转换为日期。目前,当我将数据导出到 Excel 时。它错误地转换了 As_of_Dt。月份基本保持不变,但年份变为日期,年份变为当年(2020 年)。如果 as_of_dt 是 1 月 18 日,它在 excel 中变为 1/18/20。我正在努力防止这种情况发生。

我希望此列导出为:1/1/18 当字符串为“18-Jan”时

目前,我尝试过

Data$As_of_Dt2<- zoo::as.Date(zoo::as.yearmon(Data$As_of_Dt, "%y-%b"))

但是在我创建的这个新列中,有些值是不适用的。

您将在下面找到 As_of_Dt 列的所有可能日期。

在此处输入图像描述

更新:我发现日期有时可能是 2018 年 1 月或 2018 年 1 月。有没有可以把这两种情况转换成1/1/18的函数?

标签: rdate

解决方案


您可以使用strptime.

strptime(dat, "%d-%b")
# [1] "2020-11-20 CET"  "2020-11-15 CET"  "2020-01-20 CET"  "2020-06-20 CEST"
# [5] "2020-02-20 CET"  "2020-04-19 CEST" "2020-12-16 CET"  "2020-08-20 CEST"
# [9] "2020-01-17 CET"  "2020-01-16 CET"  "2020-10-17 CEST" "2020-06-19 CEST"
# [13] "2020-08-17 CEST" "2020-05-16 CEST" "2020-10-16 CEST" "2020-08-18 CEST"
# [17] "2020-11-19 CET"  "2020-01-15 CET"  "2020-12-17 CET"  "2020-11-18 CET" 

数据:

dat <- c("20-Nov", "15-Nov", "20-Jan", "20-Jun", "20-Feb", "19-Apr", 
"16-Dec", "20-Aug", "17-Jan", "16-Jan", "17-Oct", "19-Jun", "17-Aug", 
"16-May", "16-Oct", "18-Aug", "19-Nov", "15-Jan", "17-Dec", "18-Nov")

推荐阅读