Перевод числовых значений в дату и время в R

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
oda412
Новоприбывший
Сообщения: 13
Зарегистрирован: 01 июл 2020, 11:43
Репутация: 0
Откуда: Брёхово

Перевод числовых значений в дату и время в R

Сообщение oda412 » 03 июл 2020, 20:46

Добрый вечер!
Есть вектор dt с числовыми данными:

Код: Выделить всё

43212.21 43212.21 43212.22 43212.22 43212.23 43212.24 43212.24 43212.25 43212.25 43212.26
На самом деле это дата и время с секундами в числовом формате, скопированном из Excel.
Как из этих чисел сделать нормальные дату и время?
Пробовала функцию:

Код: Выделить всё

as.POSIXct(x= dt,origin = "1899-12-30", tz     = "GMT")
Выдает результат:

Код: Выделить всё

[1] "1899-12-30 12:00:13 GMT" "1899-12-30 12:00:13 GMT" "1899-12-30 12:00:13 GMT" "1899-12-30 12:00:13 GMT"
 [5] "1899-12-30 12:00:13 GMT" "1899-12-30 12:00:13 GMT" "1899-12-30 12:00:13 GMT" "1899-12-30 12:00:13 GMT"
 [9] "1899-12-30 12:00:13 GMT" "1899-12-30 12:00:13 GMT"
Помогите, пожалуйста

Константин Силкин
Завсегдатай
Сообщения: 420
Зарегистрирован: 21 мар 2012, 07:37
Репутация: 67
Откуда: Воронеж

Re: Перевод числовых значений в дату и время в R

Сообщение Константин Силкин » 03 июл 2020, 21:54

Добрый день! В Excel дата-время хранится в таком стиле, что целая часть — это число суток от 0 января 1900 года, а дробная часть — это доля суток. Т.е. секунд в явном виде в ваших данных нет совсем.
Не знаю, поищите, готовые функции перевода в формат UNIX, но уверен, что и сами сообразите, дела не хитрое, если знать, что время UNIX — это число секунд с 1 января 1970 года.
Так что функцию POSIX, которую мы с вами разбирали в прошлый раз, в лоб использовать нельзя. Она же думает, что в ваших данных секунды

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Перевод числовых значений в дату и время в R

Сообщение gamm » 03 июл 2020, 22:51

из Ёкселя лучше экспортировать дату/время в текстовом виде, а потом спокойно парсить в POSIX (через форматирование)

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: Перевод числовых значений в дату и время в R

Сообщение nickleb » 03 июл 2020, 22:55

Код: Выделить всё

dt <- c(43212.21, 43212.21, 43212.22, 43212.22, 43212.23, 43212.24, 43212.24, 43212.25, 43212.25, 43212.26)

DT <- janitor::convert_to_datetime(dt, 
                                   character_fun=lubridate::dmy_hms, 
                                   tz="UTC")
str(DT)

POSIXct[1:10], format: "2018-04-22 05:02:24" "2018-04-22 05:02:24" "2018-04-22 05:16:48" "2018-04-22 05:16:48" ...

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Перевод числовых значений в дату и время в R

Сообщение gamm » 04 июл 2020, 06:17

Есть подозрение, что числа округлены до 2 знаков. Так что лучше экспортировать текстовые, там хоть видно, с чем имеем дело ...

nplatonov
Интересующийся
Сообщения: 25
Зарегистрирован: 07 фев 2012, 12:00
Репутация: 20

Re: Перевод числовых значений в дату и время в R

Сообщение nplatonov » 04 июл 2020, 09:17

А если напрямую?

Код: Выделить всё

readxl::read_excel()

oda412
Новоприбывший
Сообщения: 13
Зарегистрирован: 01 июл 2020, 11:43
Репутация: 0
Откуда: Брёхово

Re: Перевод числовых значений в дату и время в R

Сообщение oda412 » 04 июл 2020, 10:12

Всем большое спасибо за помощь! Здесь замечательный форум
nickleb, использовала ваш вариант - сработало, спасибо огромное!

Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя