【发布时间】:2019-10-04 05:16:50
【问题描述】:
使用 read_excel 函数时,电子表格中 FuelEventDateTime 列中的日期格式为“dd/mm/yyyy hr:mm:ss”(例如:03/05/2019 9:19:00 AM)解析为具有如下格式的字符串:示例:43588.849xxxxx(x 为任意数字)。我无法将此列设置为正确的日期类,我不知道该数字的含义,但在 Excel 中已经多次看到它。
试图将“.”分开在字符串中,将列设置为.numeric,并尝试了lubridate,R base和anydate库中的几个函数,因为该数字可能是起源“1900-01-01”中的纪元格式的日期
读取数据
sys_raw <- read_excel("Advanced Fill-Ups Report 15052019_165240.xlsx", sheet = "Data", col_names = FALSE)
col_names_sys <- sys_raw[11,]
sys_tidy <- sys_raw[12:ncol(sys_raw),] %>%
setNames(col_names_sys) %>%
select(DeviceName, FuelEventDateTime,FuelUsedEventDistance)
注意到字符串为数字,尝试单独的“。”并设置为数字
sys_tidy <- sys_tidy %>%
mutate(FuelEventDateTime = str_split(FuelEventDateTime, "\\.")) %>%
separate(FuelEventDateTime, c("c","date","time")) %>%
separate(DeviceName, c("Device"), sep = "\\s") %>%
select(Device, date, FuelUsedEventDistance) %>%
mutate(date = as.numeric(date))
sys_tidy <- sys_tidy %>%
as.Date(date, origin = "1900-01-01")
这个实际结果是错误的,预期结果是日期类格式为“dd/mm/yyyy”的列日期,不需要时间。
错误信息示例:
as.Date.default(., date, origin = "1900-01-01") 中的错误:不知道如何转换 '.'到“日期”类
as.POSIXct.default(., date, origin = "1900-01-01") 中的错误:不知道如何转换 '.'到类“POSIXct”
【问题讨论】: