首页 > 解决方案 > 如何导入具有文本和数字日期格式的日期列的 Excel 电子表格?例如,(“2019 年 12 月 3 日”、“2019 年 5 月 4 日”、“43787”

问题描述

如果我有多个具有不同格式的日期列的电子表格,如果某些行具有数字格式,是否可以转换日期?

如果我将列作为字符导入,我仍然需要转换为日期。我相信 parse_date_time 会解决任何接受数字格式的问题。

以下将转换前两个但不是数字版本。我不认为这个函数有一个数字函数。是否有可以同时处理文本和数字日期的函数?

x<- c("2019-12-05","8-Dec-19","43787")
lubridate::parse_date_time(x, c("ymd", "d-b-y"))

标签: rexcellubridate

解决方案


这有点笨拙,但是您可以janitor::excel_numeric_to_date()对任何数字值且无法通过parse_date_time...解析的数据进行第二次传递(如果您要经常使用它,您可以编写一个包装函数 - 您可能还想抑制来自parse_date_timeas.numeric...的警告消息)

x <- c("2019-12-05","8-Dec-19","43787")
y <- lubridate::parse_date_time(x, c("ymd", "d-b-y"))
exceld <- is.na(y) & !is.na(as.numeric(x))
y[exceld] <- janitor::excel_numeric_to_date(as.numeric(x[exceld]))

推荐阅读