如何解析这两种日期格式?

时间:2019-09-09 17:45:59

标签: r date lubridate

格式为4/29/2016的日期可以正确解析,但是格式为62420162042016的日期则无法解析。

R是否认为某些不带斜杠的日期是第一天而不是月份?

我尝试在dmy中加入lubrdiate,但仍然无法正常工作。

我尝试查看Sys.getlocale("LC_TIME"),它给了我"English_United States.1252"

demo$date <- as.character(demo$date)
demo <- demo %>%
      mutate(date = parse_date_time(date, "mdy"))

3 个答案:

答案 0 :(得分:2)

您可以使用Stringr将日期全部整理为相同的格式。然后转换为数字并使用lubridate进行解析。

library(stringr)
library(lubridate)

dates <- c("6242016", "2042016", "4/29/2016")
dates <- str_remove_all(dates, "/")
dates <- as.numeric(dates)

lubridate::mdy(dates)

# [1] "2016-06-24" "2016-02-04" "2016-04-29"

答案 1 :(得分:2)

as.Date(sprintf("%08d", 
         as.numeric(gsub("/", "",  c("6242016", "2042016", "4/29/2016")))), 
         format = "%m%d%Y")

 # [1] "2016-06-24" "2016-02-04" "2016-04-29"

答案 2 :(得分:0)

as.Date("2042016", "%m%d%Y")

返回NA,而不是

as.Date("02042016", "%m%d%Y")

这是因为月份必须用两位数字(00-12)表示

尝试在[1,9]范围内的月份中添加前导零。