使用read_excel函数进行R日期解析

时间:2019-05-16 21:28:12

标签: r date readxl

使用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”分类

1 个答案:

答案 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”类的对象。