R: Как обрабатывать время без дат?

У меня есть данные, которые include Date а также Time enter и Time exit . Эти последние два содержат такие данные: 08:02 , 12:02 , 23:45 и т. Д.

Я хотел бы манипулировать данными Time eXXX – например, вычесть Time enter из Time exit для продолжительности работы или рассказать о распределении Time enter и Time exit , например, чтобы увидеть, если большинство записей до 10:00, или если большинство выходы после 17:00.

Во всех пакетах, на которые я смотрел, требуется дата, предшествующая времени, например 01/02/2012 12:33 .

Возможно ли это, или я просто добавляю идентичную дату в каждый раз ради расчетов? Это кажется немного грязным!

Используйте class "times" найденный в пакете chron:

 library(chron) Enter <- c("09:12", "17:01") Enter <- times(paste0(Enter, ":00")) Exit <- c("10:15", "18:11") Exit <- times(paste0(Exit, ":00")) Exit - Enter # durations sum(Enter < "10:00:00") # no entering before 10am mean(Enter < "10:00:00") # fraction entering before 10am sum(Exit > "17:00:00") # no exiting after 5pm mean(Exit > "17:00:00") # fraction exiting after 5pm table(cut(hours(Enter), breaks = c(0, 10, 17, 24))) # Counts for indicated hours ## (0,10] (10,17] (17,24] ## 1 1 0 table(hours(Enter)) # Counts of entries each hour ## 9 17 ## 1 1 stem(hours(Enter), scale = 2) ## The decimal point is at the | ## 9 | 0 ## 10 | ## 11 | ## 12 | ## 13 | ## 14 | ## 15 | ## 16 | ## 17 | 0 

Графика:

 tab <- c(table(Enter), -table(Exit)) # Freq at each time. Enter is pos; Exit is neg. plot(times(names(tab)), tab, type = "h", xlab = "Time", ylab = "Freq") abline(v = c(10, 17)/24, col = "red", lty = 2) # vertical red lines abline(h = 0) # X axis 

Скриншот

Будет что-то подобное?

 SubstracTimes <- function(TimeEnter, TimeExit){ (as.numeric(format(strptime(TimeExit, format ="%H:%M"), "%H")) + as.numeric(format(strptime(TimeExit, format ="%H:%M"), "%M"))/60) - (as.numeric(format(strptime(TimeEnter, format ="%H:%M"), "%H")) + as.numeric(format(strptime(TimeEnter, format ="%H:%M"), "%M"))/60) } 

Тестирование:

 TimeEnter <- "08:02" TimeExit <- "12:02" SubstracTimes(TimeEnter, TimeExit) > SubstracTimes(TimeEnter, TimeExit) [1] 4 

Вышел аналогичный вопрос и был вдохновлен этим сообщением. @Г. Гротендик и Давид Аренбург дали отличные ответы на вопрос о том, как изменить время.

Для сравнения, я чувствую, что заставляю время использовать числовые подсказки. Вместо сравнения "11:22:33" с "9:00:00" , сравнивая as.numeric(hms("11:22:33")) (что составляет 40953 секунды) и as.numeric(hms("9:00:00")) ( 32400 ) было бы намного проще.

 as.numeric(hms("11:22:33")) > as.numeric(hms("9:00:00")) & as.numeric(hms("11:22:33")) < as.numeric(hms("17:00:00")) [1] TRUE 

Вышеприведенный пример показывает, что 11:22:33 находится между 9 утра и 5 вечера.

Чтобы извлечь только время с даты или объекта POSIXct, substr("2013-10-01 11:22:33 UTC", 12, 19) должен работать, хотя выглядит глупо, чтобы изменить объект времени на строку / символ и вернуться к снова.

Преобразование времени в числовое значение должно работать для построения графика как @G. Гротендик рассорился. Вы можете преобразовать числа во времени по мере необходимости для меток оси x.

  • Таймаут запроса Tomcat
  • Почему System.nanoTime () медленнее (по производительности), чем System.currentTimeMillis ()?
  • Как преобразовать строковую переменную, содержащую время в тип time_t в c ++?
  • В Ruby on Rails, какая разница между DateTime, Timestamp, Time и Date?
  • Измерьте время выполнения в C ++ OpenMP-коде
  • Время выполнения и время компиляции
  • Тайм-аут сеанса в ASP.NET
  • Измерьте прошедшее время в быстром
  • Swift: как создать отметку времени и формат даты как ISO 8601, RFC 3339, часовой пояс UTC?
  • Является ли sizeof в C ++ оцененным во время компиляции или времени выполнения?
  • Время: Как добраться до следующей пятницы?
  • Interesting Posts

    Как иметь динамический SQL в хранимой процедуре MySQL

    Когда использовать enums, а когда заменить их classом статическими членами?

    Может ли функция onprogress быть добавлена ​​в jQuery.ajax () с помощью xhrFields?

    как освободить localhost от Error: прослушать EADDRINUSE

    Как включить / отключить уровни журналов в Android?

    Можете ли вы установить Ubuntu Server в Windows PC VM на Windows 7?

    График реального времени в MATLAB

    Изменить текстовый редактор по умолчанию для crontab на vim

    Список хранимых процедур / функций Командная строка Mysql

    По какой причине я не могу создавать общие типы массивов в Java?

    Как прекратить процесс простоя системы?

    интересное OutOfMemoryException с StringBuilder

    Обратный вызов .animate () вызывается дважды jquery

    Можете ли вы определить несколько TargetTypes для одного стиля XAML?

    Не удается получить доступ к общему диску в одном и том же имени машины uisng, но может получить доступ к IP-адресу

    Давайте будем гением компьютера.