Excel числовое кодирование даты (UTC) в преобразование даты - PullRequest
0 голосов
/ 11 сентября 2018

Я не могу найти ответы на этот вопрос, я пробовал несколько вещей - я все еще очень плохо знаком с R.

У меня есть две переменные в наборе данных Old Data

  • Open Date - число из Excel и
  • Closed Date - POSIXct, формат: "2017-10-11 12:39:37"

Iне могу заставить их вычитать для каждой строки в наборе данных, преобразования, кажется, отключены

Это то, что я пытаюсь сделать (без синтаксиса):

Newdata <- Newtime = (Closed Date - Open Date) from Old Data

Вот dput(Old Data) результаты:

structure(list(open_date = c(43018, 43018, 43020, 43027), close_date = c("9/9/2018 12:11:11", 
"9/11/2018 13:21:11", "9/1/2018 14:31:41", "9/5/2018 15:44:41"
)), class = "data.frame", row.names = c(NA, -4L))

Заранее спасибо!

1 Ответ

0 голосов
/ 22 сентября 2018

Вы можете использовать функцию excel_numeric_to_date пакета janitor для преобразования числового формата даты Excel в Date, а затем использовать функцию mdy пакета lubridate для преобразования строки символов в Date. Тогда вы можете рассчитать difftime период в днях, как показано ниже:

library(janitor)
library(lubridate)

df <- structure(list(open_date = c(43018, 43018, 43020, 43027), 
close_date = c("9/9/2018 12:11:11", 
"9/11/2018 13:21:11", "9/1/2018 14:31:41", "9/5/2018 15:44:41"
)), class = "data.frame", row.names = c(NA, -4L))

df$open_date <- excel_numeric_to_date(df$open_date)
df$close_date <- as_date(dmy_hms(df$close_date))
df$new_date_time <- df$close_date - df$open_date
df

Выход:

   open_date close_date new_date_time
1 2017-10-10 2018-09-09      334 days
2 2017-10-10 2018-11-09      395 days
3 2017-10-12 2018-01-09       89 days
4 2017-10-19 2018-05-09      202 days
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...