Вы можете попробовать это (изменить данные Пример немного, чтобы убедиться, что время вылета всегда больше чем время прибытия, будет хорошо, если у вас есть дата и время как в момент прибытия, так и в отъезде), на рисунке ниже метка времени 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))
вы можете иметь 'histogram'
вместо, как geom
в qplot
, чтобы получить следующую цифру:
Большое вам спасибо за вашу помощь. На самом деле у меня есть дата и время, поэтому, например, пациент прибудет в 01Dec2016 17:45 и уйдет в 28Dec2017 08:00. У меня есть данные такого рода в течение года, и я изо всех сил пытаюсь создать гистограмму, показывающую среднее количество пациентов в каждом часе. Любая помощь? –
Просто переформатируйте свои данные с помощью 'strptime' и тот же код должен работать. –
спасибо, но я не могу заставить гистограмму работать даже после того, как я переформатировал данные. Ошибка: «Предупреждающее сообщение: Удалено 373597 строк, содержащих не конечные значения (stat_count). « –