2017-02-09 2 views
1

у меня есть набор данных с указанием пациентов прибытия и отъезда в больнице:Производство гистограммы - вхождение событий через несколько часов

arrival<-c("12:00","12:30","14:23","16:55","00:04","01:00","03:00") 
departure<-c("13:00","16:00","17:38","00:30","02:00","07:00","23:00") 

Я хочу, чтобы произвести гистограмму подсчета количества пациентов в каждых временных зонах (00: 00-01: 00; 01: 00-02: 00 и т. Д.) В больнице.

Так что я хотел бы получить что-то вроде между 12: 00- 12:59 есть 2 пациентов и т.д.

ответ

1

Вы можете попробовать это (изменить данные Пример немного, чтобы убедиться, что время вылета всегда больше чем время прибытия, будет хорошо, если у вас есть дата и время как в момент прибытия, так и в отъезде), на рисунке ниже метка времени 10:00 фактически представляет время от 10:00-10:59, вы можете изменить этикетки, если хотите.

arrival<-c("12:00","12:30","14:23","16:55","00:04","01:00","03:00") 
departure<-c("13:00","16:00","17:38","23:30","02:00","07:00","11:00") 
df <- data.frame(arrival=strptime(arrival, '%H:%M'),departure=strptime(departure, '%H:%M')) 
hours_present <- do.call('c', apply(df, 1, function(x) seq(from=as.POSIXct(x[1], tz='UTC'), 
                  to=as.POSIXct(x[2], tz='UTC'), by="hour"))) 
library(ggplot2) 
qplot(hours_present, geom='bar') + 
    scale_x_datetime(date_breaks= "1 hour", date_labels = "%H:%M", 
        limits = as.POSIXct(c(strptime("0:00", "%H:%M"), strptime("23:00", "%H:%M")), tz='UTC')) + 
    scale_y_continuous(breaks=1:5) + 
    theme(axis.text.x = element_text(angle=90, vjust = 0.5)) 

enter image description here

вы можете иметь 'histogram' вместо, как geom в qplot, чтобы получить следующую цифру: enter image description here

+0

Большое вам спасибо за вашу помощь. На самом деле у меня есть дата и время, поэтому, например, пациент прибудет в 01Dec2016 17:45 и уйдет в 28Dec2017 08:00. У меня есть данные такого рода в течение года, и я изо всех сил пытаюсь создать гистограмму, показывающую среднее количество пациентов в каждом часе. Любая помощь? –

+0

Просто переформатируйте свои данные с помощью 'strptime' и тот же код должен работать. –

+0

спасибо, но я не могу заставить гистограмму работать даже после того, как я переформатировал данные. Ошибка: «Предупреждающее сообщение: Удалено 373597 строк, содержащих не конечные значения (stat_count). « –