0

格式化为的日期4/29/2016被正确解析,但格式化为的日期62420162042016被解析。

R是否认为某些没有斜线的日期首先是日期而不是月份?

我试过包括在内dmylubrdiate它仍然不起作用。

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

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

3 回答 3

3

您可以使用 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"
于 2019-09-09T17:59:07.377 回答
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"
于 2019-09-09T18:50:07.170 回答
0

这个

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

返回NA而不是

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

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

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

于 2019-09-09T17:54:26.493 回答