Исправить некорректный интервал времени

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
Аватара пользователя
VistaSV30
Активный участник
Сообщения: 185
Зарегистрирован: 02 июл 2018, 15:05
Репутация: 7
Откуда: Балашиха

Исправить некорректный интервал времени

Сообщение VistaSV30 » 13 июн 2020, 19:45

Добрый день!

Подскажите как исправить ошибку при расчете интервала времени:

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

library(lubridate)

t1 <- dmy_hm(c("12.10.2019 16:12", "12.10.2019 23:50"))
t2 <- dmy_hm(c("12.10.2019 16:13", "12.10.2019 0:20"))

dt <- difftime(t2, t1, units = "mins")
Получается:
Time differences in mins
[1] 1 -1410

Нужно прописать условие, чтоб при возникновении отрицательного результата к нему прибавлялось 1440. По условию интервал не может быть дольше 1440 минут.

Сделал следующее:

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

fdt <- function(x) {
  if(x<0) {x <- x+1440}
    return(x)
  }

apply(dt, FUN = fdt)
Получается ошибка:
Ошибка в apply(dt, FUN = fdt) :dim(X) должен иметь положительную длину

Подскажите, что не так?
Спасибо!
Природа не просто эксцентричнее, чем мы полагаем - она эксцентричнее, чем мы способны предположить. John Haldane

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

Re: Исправить некорректный интервал времени

Сообщение nickleb » 13 июн 2020, 20:39

м.б.:

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

dt <- difftime(t2, t1, units = "mins")
dt <- ifelse(dt < 0, dt + 24 * 60, dt)
str(dt)
?

..хотя, если:

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

t2[2] = dmy_hm("13.10.2019 0:20")
то и ifelse не надо...

Аватара пользователя
VistaSV30
Активный участник
Сообщения: 185
Зарегистрирован: 02 июл 2018, 15:05
Репутация: 7
Откуда: Балашиха

Re: Исправить некорректный интервал времени

Сообщение VistaSV30 » 13 июн 2020, 20:54

Спасибо nickleb!
Вы меня уже в который раз выручаете.

Описанная ситуация возникает из-за того, что в базе данных время так записано. Сначала дата события, а потом для всех последующих событий записываются только часы и минуты.

Подскажите, еще, а что с apply не так?
Природа не просто эксцентричнее, чем мы полагаем - она эксцентричнее, чем мы способны предположить. John Haldane

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

Re: Исправить некорректный интервал времени

Сообщение nickleb » 13 июн 2020, 20:58

VistaSV30 писал(а):
13 июн 2020, 19:45
apply(dt, FUN = fdt)
- если через Вашу функцию и apply-семейство, то:

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

sapply(dt, FUN = fdt)

Аватара пользователя
VistaSV30
Активный участник
Сообщения: 185
Зарегистрирован: 02 июл 2018, 15:05
Репутация: 7
Откуда: Балашиха

Re: Исправить некорректный интервал времени

Сообщение VistaSV30 » 13 июн 2020, 21:00

Спасибо!
Работает! :D
Природа не просто эксцентричнее, чем мы полагаем - она эксцентричнее, чем мы способны предположить. John Haldane

Ответить

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

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

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