使用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”分类
答案 0 :(得分:0)
o world
您可能是说
sys_tidy <- sys_tidy %>%
as.Date(date, origin = "1900-01-01")
否则,您要将数据帧插入sys_tidy <- sys_tidy %>%
mutate(date = as.Date(date, origin = "1900-01-01"))
的第一项中,而R不知道该怎么做。从?as.Date: as.Date方法接受字符串,因子,逻辑NA和“ POSIXlt”和“ POSIXct”类的对象。