根据单元的进出时间每小时确定内容

Determining content every hour based on exit and entry times on units

如您所见,我有一个显示区域进入和退出时间的数据集。 我想按小时确定该区域的内容,最好是在具有新列的同一数据集中,或者在新数据集中。下面是数据。

ID      Arrival (sec)   Exit (sec)
7656    152845.085      155747.92
7657    152845.085      155784.91
7658    147617          150035.747
7659    152852.811      158216.428
7660    147617          150076.503

数据显示自 2000 年 00:00 年 1 月 1 日起的秒数。

这样做的目的是在 Tableau 中创建一个条形图,显示一周内每小时的此内容。因此,R 和 SQL 是程序的首选语言。

所以,我尝试在 excel 中做到这一点,我做到了:

ID      Arrival (sec)   Exit (sec)  Arrival hour (int)  Exit(int)
7656    152845.085      155747.92   42                  43
7657    152845.085      155784.91   42                  43
7658    147617          150035.747  41                  41
7659    152852.811      158216.428  42                  43
7660    147617          150076.503  41                  41

然后做出输出table:

Hour    In  out Content Running total
41      2   2   0       0
42      3   0   3       3
43      0   3   -3      0
44      0   0   0       0

你能帮忙在 SQL 或 R 中做这件事吗?也许以更顺畅的方式,这只会将列中的 运行 总数添加到第一个 table?

library(dplyr)
library(tidyr)

df %>%
  mutate(Arrival_hour_int = floor(Arrival_sec/3600),
         Exit_hour_int = floor(Exit_sec/3600)) %>%
  select(Arrival_hour_int, Exit_hour_int) %>%
  gather(Key, Hour) %>%
  group_by(Hour) %>%
  summarise(In = sum(Key=='Arrival_hour_int'),
            Out = sum(Key=='Exit_hour_int')) %>%
  mutate(Content = In - Out,
         Running_total = cumsum(Content)) %>%
  data.frame()

输出为:

  Hour In Out Content Running_total
1   41  2   2       0             0
2   42  3   0       3             3
3   43  0   3      -3             0

示例数据:

df <- structure(list(ID = 7656:7660, Arrival_sec = c(152845.085, 152845.085, 
147617, 152852.811, 147617), Exit_sec = c(155747.92, 155784.91, 
150035.747, 158216.428, 150076.503)), .Names = c("ID", "Arrival_sec", 
"Exit_sec"), class = "data.frame", row.names = c(NA, -5L))