从较小的时间戳间隔计算每小时的行驶距离以进行绘图

时间:2019-03-27 18:02:17

标签: r

我对R很陌生,发现难以分析时间数据。这是我正在使用的数据集的MONTHS: 33 DAYS: 1 (the only day to compute is the first day of first interval) 示例,其中包含数千行:

head()

> head(datanet) Date & Time [Local] meters 1: 18/06/2018 03:01 45.74068 2: 18/06/2018 03:06 15.22141 3: 18/06/2018 03:08 15.95937 4: 18/06/2018 03:12 22.53557 5: 18/06/2018 03:16 12.03683 6: 18/06/2018 03:20 18.73813 列上是时间戳记,在Date & Time [Local]列上具有同一行和下一行的时间戳记之间的行进距离(以米为单位)的值。

例如:meters米在45.7406818/06/2018 03:01之间移动

我想创建一个数据集,根据18/06/2018 03:06,我可以使用该数据集plot()每天每小时(从00:00到23:00)的平均行驶距离数据集。可能的输出为(未填充datanet值):

meters

> head(output) Time meters 1: 00:00 2: 01:00 3: 02:00 4: 03:00 5: 04:00 6: 05:00 数据集将基于output数据集中所有天的小时平均每日数据。

我将在下面上传更大的datanet示例:

datanet

1 个答案:

答案 0 :(得分:1)

如果您不在乎交叉/分配(例如,如果下一行是10米的2018-06-15 03:55,那么如何从2018-06-15 04:02进行分配),您可以执行以下简单操作:

library(tidyverse)
library(lubridate)

df %>% 
  mutate(
    date = dmy_hm(date),
    hour = hour(date)
  ) %>% 
  group_by(hour) %>%
  summarise(
    avg_meters = mean(meters)
  )

# A tibble: 24 x 2
    hour avg_meters
   <int>      <dbl>
 1     0      12.3 
 2     1       7.62
 3     2       1.36
 4     3       7.92
 5     4       4.33
 6     5       8.06
 7     6      29.7 
 8     7      18.9 
 9     8      19.8 
10     9      11.5 
# ... with 14 more rows

然后您可以添加:

%>%
  ggplot(aes(x = hour, y = avg_meters)) +
  geom_line()

enter image description here