2014-11-29 2 views
2

В течение нескольких месяцев я отмечал, что я проснулся каждое утро. Теперь у меня есть база данных, которая содержит время суток в формате 24 часа, например. 2014-11-29 05:23:00, который я могу украсить чем-то вроде 04:23.Как анализировать время в R

Я хочу рассказать о распределении времени моего пробуждения. Ось x будет временем дня, ось y будет частотой. Все очень просто, за исключением:

То, что я сейчас ломаю себе голову, это то, как обращаться с шкалой по оси Х. Так как 60 минут до часа, я мог бы:

  1. Создать шкалу минут в день, где время 4:23 будет преобразован в минуту 263. Это было бы легко на моих расчетах, но неинтуитивный для чтения. Конечно, я мог легко преобразовать эти минуты.

  2. Используйте стоминутный час. Поскольку ось на моем графике будет помечена только каждый час, это будет легко подсчитать и легко прочитать. Но если я хочу увидеть средние или другие рассчитанные данные в 60-минутном времени, мне придется переконфигурировать его, что может вызвать неточности. Но я думаю, это было бы незначительным.

  3. Позвольте R обрабатывать раз.

Поскольку единственное, что я не знаю, как сделать это третий вариант, на мой вопрос:

Как я могу использовать время как данные в R? И что это лучший способ сделать это?


Вот пример вектор времени, если вы хотите попробовать что-то:

t <- c("00:13:00", "00:30:00", "00:36:00", "00:45:00", "00:48:00", "01:08:00", "01:14:00", "01:15:00", "01:25:00", "02:06:00", "02:07:00", "02:22:00", "02:23:00", "02:36:00", "02:37:00", "02:55:00", "03:08:00", "03:10:00", "03:11:00", "03:13:00", "03:15:00", "03:23:00", "03:35:00", "03:55:00", "03:57:00", "03:58:00", "04:03:00", "04:06:00", "04:15:00", "04:21:00", "04:21:00", "04:22:00", "04:43:00", "04:48:00", "04:51:00", "04:58:00", "05:00:00", "05:02:00", "05:03:00", "05:17:00", "05:25:00", "05:34:00", "05:38:00", "05:45:00", "05:46:00", "05:50:00", "05:52:00", "06:10:00", "06:11:00", "06:13:00", "06:23:00", "06:26:00", "22:18:00", "23:27:00", "23:40:00", "23:53:00", "23:54:00", "23:58:00") 

Я пытался построить времена, используя chron библиотеку, но по какой-то причине маркировки оси x возвращается к 0 к 1, когда диапазон составляет 24 часа (он показывает времена, когда график составляет всего несколько часов), а функция hist отказывается использовать любые графические параметры (plot остается FALSE, даже когда I explici ждение установить его TRUE:

library(chron) 
t <- times(c("00:13:00", "00:30:00", "00:36:00", "00:45:00", "00:48:00", "01:08:00", "01:14:00", "01:15:00", "01:25:00", "02:06:00", "02:07:00", "02:22:00", "02:23:00", "02:36:00", "02:37:00", "02:55:00", "03:08:00", "03:10:00", "03:11:00", "03:13:00", "03:15:00", "03:23:00", "03:35:00", "03:55:00", "03:57:00", "03:58:00", "04:03:00", "04:06:00", "04:15:00", "04:21:00", "04:21:00", "04:22:00", "04:43:00", "04:48:00", "04:51:00", "04:58:00", "05:00:00", "05:02:00", "05:03:00", "05:17:00", "05:25:00", "05:34:00", "05:38:00", "05:45:00", "05:46:00", "05:50:00", "05:52:00", "06:10:00", "06:11:00", "06:13:00", "06:23:00", "06:26:00", "22:18:00", "23:27:00", "23:40:00", "23:53:00", "23:54:00", "23:58:00")) 
hist(t, probability = TRUE, col = "gray") 
lines(density(t), col = "blue", lwd = 2) 
lines(density(t, adjust = 2), lty = "dotted", col = "darkgreen", lwd = 2) 

Warning message: 
In hist.default(t, probability = TRUE, col = "gray", plot = FALSE) : 
    arguments ‘freq’, ‘col’ are not made use of 

enter image description here

+0

Во-первых, вы, вероятно, захотите использовать '? Strptime' в R (см. Мой пример) в этих текстовых строках. Secondly..ggplot2 - ваш друг. Это может помочь вам, если вы еще не используете его: http://www.cookbook-r.com/Graphs/Plotting_distributions_(ggplot2)/ –

ответ

3
library(ggplot2) 

#generate random times (between 4AM and 7:59AM) as a proxy for your data 
Random_times=c(); 
for(i in 1:600){ 
    Random_times=c(Random_times,as.POSIXct(strptime(paste(sample(4:7,1),":",sample(0:59,1),":","00",sep=""),"%H:%M"))) 
} 

#as absolute times 
P_random_times=as.POSIXct(Random_times, origin="1970-01-01") 
qplot(P_random_times)+xlim(c(strptime("03:00","%H:%M"),strptime("10:00","%H:%M"))) 



#Or as mins from the minumum wake time 
P_times=difftime(P_random_times, min(P_random_times),units="mins") 
qplot(as.numeric(P_times)) 

histogram with time by R

0

вы считали ли с помощью каких-то произвольных "нулевых" точек? Это может быть минимальное значение или среднее время пробуждения. Я мог представить, что вас интересуют различия между временами, поэтому «ноль» может быть произвольным моментом времени в качестве привязки для сравнения.