Разбор даты R с использованием функции read_excel - PullRequest
0 голосов
/ 17 мая 2019

При использовании функции read_excel даты в электронной таблице в столбце FuelEventDateTime имеют формат «дд / мм / гггг ч .: мм: сс» (пример: 05.03.2009 9:19:00 AM)анализируется как символьная строка в таком формате: пример: 43588.849xxxxx (х х любое число).Я не могу установить в этом столбце правильный класс даты, и я не знаю, что может означать это число, но видел его несколько раз в Excel.

Пытался отделить "."в строке символов установите столбец as.numeric и опробовал несколько функций в lubridate, R base и anydate library, поскольку, возможно, это число является датой в формате эпохи в источнике "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") 

Фактические результаты этого - ошибки, ожидаемый результат - дата столбца с классом даты в формате "дд / мм / гггг", время не требуется.

Пример сообщений об ошибках:

Ошибка в as.Date.default (., Date, origin = "1900-01-01"): не знаю, как конвертировать '«.в класс «Дата»

Ошибка в as.POSIXct.default (., date, origin = "1900-01-01"): не знаю, как преобразовать '.'в класс «POSIXct»

1 Ответ

0 голосов
/ 17 мая 2019
sys_tidy <- sys_tidy %>% 
   as.Date(date, origin = "1900-01-01") 

Вы, вероятно, имеете в виду

sys_tidy <- sys_tidy %>% 
   mutate(date = as.Date(date, origin = "1900-01-01"))

В противном случае вы подключаете фрейм данных к первому члену as.Date, и R не знает, что с этим делать.From? As.Date: Методы as.Date принимают символьные строки, факторы, логические NA и объекты классов "POSIXlt" и "POSIXct".

...