转换字符日期

Converting character dates

我正在尝试在 R 中如下转换字符日期:

Before          After
"31/03/2018"    "201804"
"30/06/2018"    "201807"
"30/09/2018"    "201810"
"31/12/2018"    "201901"

月份提前了一个月。这将有助于人们尝试将日历日期转换为加拿大财政日期,该日期紧随第 1、4、7 和 10 个月,而不是其他地方的第 3、6、9 和 12 个月(通常)。

看起来你还没有尝试过任何东西,给你:

format(as.Date("31/03/2018","%d/%m/%Y")+1,"%Y%m")
format(as.Date(Before,"%d/%m/%Y")+1,"%Y%m")

使用 lubridate,事情就像增加一天一样简单:

library(lubridate)
before <- c("31/03/2018","30/06/2018","30/09/2018","31/12/2018")
after <- dmy(before)+days(1)
format(after, "%Y%m")

在这种情况下使用 %m+% 运算符非常方便。 %m+% months(1) 会将日期添加 1 个月,或者 %m+% months(2) 会将日期添加 2 个月。甚至可以使用 %m+% years(1)1 年份添加到日期变量。

library(lubridate)

v <- c("31/03/2018", "30/06/2018", "30/09/2018", "31/12/2018")


format((dmy(v) %m+% months(1)), "%Y%m")
#[1] "201804" "201807" "201810" "201901"