绘制时间并获得R中的计数

时间:2019-03-18 22:53:00

标签: r ggplot2 time

REGISTRATION_TIME
08:53:16
13:18:57
15:57:58
09:25:47
13:35:54
12:01:31
09:37:57
12:44:47
21:26:12
21:26:12
14:56:13
02:09:31
15:28:51
15:30:57

我正在尝试在X轴上绘制时间并找到每次的计数。这是5,000行的样本数据集。并且还希望每小时创建一个垃圾箱。

我尝试了以下操作:

TIME_plot <- ggplot(LW_Par, aes(REGISTRATION_TIME)) + geom_bar(colour = "white", fill = "#1380A1")

在弄清楚如何编写此代码方面遇到一些麻烦,将不胜感激。


Time_Plot <- LW_Par %>%
  mutate(REGISTRATION_TIME = hms(REGISTRATION_TIME)) %>% 
  ggplot(aes(x = REGISTRATION_TIME)) +
  geom_histogram(bins = 24, colour = "white", fill = "#1380A1") + 
  scale_x_time() + bbc_style()
Time_Plot

因此,使用H 1提供的解决方案(谢谢),我将如何扩展x轴中断以提供有关计数在哪里的更多见解?

还有没有一种方法可以在时间数据上使用“摘要”来查找数据集的平均值或众数?

enter image description here

2 个答案:

答案 0 :(得分:2)

一种方法是使用geom_histogram轻松对数据进行装箱:

library(dplyr)
library(ggplot2)
library(lubridate)

dat %>%
  mutate(REGISTRATION_TIME = hms(REGISTRATION_TIME)) %>% 
  ggplot(aes(x = REGISTRATION_TIME)) +
  geom_histogram(bins = 24) +
  scale_x_time()

enter image description here

编辑:

您可以在breaks命令中使用scale参数来设置x轴标签的数量。您还可以通过使用binwidth中的geom_histogram参数来更好地控制垃圾箱。当您具有时间变量时,单位表示秒,因此您可以按15分钟进行分档,例如按“ binwidth = 900”进行分档。

dat %>%
  mutate(REGISTRATION_TIME = hms(REGISTRATION_TIME)) %>% 
  ggplot(aes(x = REGISTRATION_TIME)) +
  geom_histogram(binwidth = 900) +
  scale_x_time(breaks = hm(paste0(seq(0, 24, by = 3), ":00")))

数据:

dat <- read.table(text = "REGISTRATION_TIME
08:53:16
13:18:57
15:57:58
09:25:47
13:35:54
12:01:31
09:37:57
12:44:47
21:26:12
21:26:12
14:56:13
02:09:31
15:28:51
15:30:57", header = TRUE)

答案 1 :(得分:0)

@ H1解决方案的微小变化。您可以在ggplot之前进行时间存储:

library(dplyr); library(lubridate)
dat %>%
  mutate(REG_TIME_HOUR = hour(hms(REGISTRATION_TIME))) %>%
  count(REG_TIME_HOUR) %>%
  ggplot(aes(REG_TIME_HOUR, n)) + geom_col()

enter image description here