R:使用 lubridate as.Dates 函数将 YYYYMMDD 转换为日期

R: Using the lubridate as.Dates function to convert YYYYMMDD to dates

目前我正在尝试将 YYYYMMDD 格式的日期转换为单独的年月日列。我知道使用 as.Date 函数我可以将 YYYYMMDD 转换为 YYYY-MM-DD,然后从那里开始工作,但是 R 误解了日期,我不确定该怎么做。该函数正在将值转换为日期,但不正确。

例如:R 正在将“19030106”转换为“2019-03-01”,而它应该是“1903-01-06”。我不确定如何解决这个问题,但这是我正在使用的代码。

library(lubridate)

PrecipAll$Date <- as.Date(as.character(PrecipAll$YYYYMMDD), format = "%y%m%d")

YYYYMMDD 目前是数字,我需要包含 as.character 才能输出日期,但如果有更好的解决方案请帮忙。

此外,如果您有任何关于将更正日期分成单独的年、月和日期列的提示,我们将不胜感激。

使用 {lubridate},尝试 ymd() 解析 YYYYMMDD 变量,如果它是数字或字符形式则不会重新排序。还可以使用 {lubridate} 的 yearmonthday 函数将这些变量作为数字信号获取。

library(lubridate)

PrecipAll <- data.frame(YYYYMMDD = c(19030106, 19100207, 20001130))

mutate(.data = PrecipAll, 
       date = lubridate::ymd(YYYYMMDD), 
       year = year(date), 
       month_n = month(date), 
       day_n = day(date))

  YYYYMMDD       date year month_n day_n
1 19030106 1903-01-06 1903       1     6
2 19100207 1910-02-07 1910       2     7
3 20001130 2000-11-30 2000      11    30