【问题标题】:Plotting frequency of occurrences based on start/end times in R根据 R 中的开始/结束时间绘制发生频率
【发布时间】:2019-07-14 21:40:02
【问题描述】:

我有一个“旅行”数据集,其中包含一个唯一的旅行 ID,以及旅行的开始和结束时间(具体的小时和分钟)。这些旅行都是在同一天进行的。我试图确定在任何给定时间道路上的汽车数量,并使用 R 中的 ggplot 将其绘制为折线图。换句话说,汽车在开始和结束时间之间的任何时间都“在路上” .

我能找到的最相似的例子使用以下结构:

yearly_counts <- trips %>%
                 count(year, trip_id)

ggplot(data = yearly_counts, mapping = aes(x = year, y = n)) +
     geom_line()

最好的方法是修改这个结构有一个“minutesByHour_count”变量,它对每小时的每一分钟都有一个计数吗?这对我来说似乎效率低下,并且仍然不能解决从开始/结束时间获取计数的问题。

有没有更简单的方法来做到这一点?

【问题讨论】:

  • 请尝试添加一个工作示例(包括数据,可能是模拟数据)——它大大提高了您获得有用回复的机会。

标签: r datetime ggplot2 plot


【解决方案1】:

下面是一个示例,将每次开始计算为额外的汽车,将每次结束计算为减少计数:

library(tidyverse)
df %>%
  gather(type, time, c(start_hour, end_hour)) %>%
  mutate(count_chg = if_else(type == "start_hour", 1, -1)) %>%
  arrange(time) %>%
  mutate(car_count = cumsum(count_chg)) %>%
  ggplot(aes(time, car_count)) +
  geom_step()

样本数据:

df <- data.frame(
  uniqueID = 1:60,
  start_hour = seq(8, 12, length.out = 60),
  dur_hour = 0.05*1:60
)
df$end_hour = df$start_hour + df$dur_hour
df$dur_hour = NULL

【讨论】:

    猜你喜欢
    • 2020-08-27
    • 2019-12-06
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 2016-01-02
    • 1970-01-01
    相关资源
    最近更新 更多