Как читать в файле Excel, когда дата и время в одном столбце в R - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь прочитать файл Excel в R. Среди других полей в файле Excel есть два поля «дата», каждое из которых содержит как дату, так и отметку времени в одном и том же поле.

Пример:

StartDate 9/14/2019 10:18:59 AM
EndDate 9/18/2019 2:27:14 AM

Когда я попытался прочитать read_excel в файле excel, фрейм данных очень странно отформатировал эти два столбца. Выплюнул дни (с десятичными знаками). Например, 43712.429849537039, которые, как я думал, были дни с января 01-1970 (дата происхождения, которая появилась, когда я набрал lubrudate :: origin).

data %<>%    
  mutate(StartDate = as.Date(StartDate, origin = "1970-01-01 UTC"))

Итак, я попытался преобразовать это обратно, используя as.Date, но он конвертирует его в совершенно неправильную дату ... (конвертирует все даты в год 2089). Пример 2089-09-05.

Любая помощь в этом была бы очень признательна! Должен быть более простой способ непосредственного чтения в столбце даты и времени?!

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Оказывается, что Excel имеет другую «дату происхождения», чем R. Excels считает дни с 01-01-1900, где R считает дни с 01-01-1970.

Когда я использовал read_excel для чтения файла в df, R использовал число дней, превышающее число. Вот почему я получил странную дату, когда попытался преобразовать ее в формат даты, используя 1970. Как только я использовал as.Date с превосходной датой «происхождение» 1990 (превосходит дату происхождения), мои даты были проанализированы правильно!

0 голосов
/ 08 ноября 2019

Вы можете использовать пакет lubridate, это отлично:

library(tidyverse)

df  <- data.frame(StartDate  =c("9/14/2019 10:18:59 AM","9/14/2019 3:18:59 PM"), 
                  EndDate= c("9/18/2019 2:27:14 AM","9/18/2019 1:27:14 PM"))


df <- df %>% mutate(StartDate = lubridate::mdy_hms(StartDate), EndDate = lubridate::mdy_hms(EndDate))
...