如何按小时对值进行分组,并计算其他列中的累计总数

时间:2018-04-29 18:15:58

标签: r grouping

我有一个每分钟聚合的数据框(其中一行代表YYYY-MM-DD HH:MM:SS格式的一分钟)。

我想将每个分钟值分组到各自的小时值/箱中。

我还将日期字段中的小时值提取到另一列,以便更轻松地对数据进行分组(YYYY-MM-DD HH)。

我看过几个方法/答案,人们建议使用lubridate / dplyr / anytime,但似乎没有任何方法对我有用。

我的数据框:

> df

  date                hour                 available busy
1 2018-03-01 01:00:00 2018-03-01 01:00:00  1         1
2 2018-03-01 01:01:00 2018-03-01 01:00:00  1         1
3 2018-03-01 01:02:00 2018-03-01 01:00:00  1         1
4 2018-03-01 01:03:00 2018-03-01 01:00:00  1         1
5 2018-03-01 01:04:00 2018-03-01 01:00:00  1         1
6 2018-03-01 01:05:00 2018-03-01 01:00:00  1         1
...
7907 2018-03-14 00:54:00 2018-03-14        1         0
7908 2018-03-14 00:55:00 2018-03-14        1         0
7909 2018-03-14 00:56:00 2018-03-14        2         0
7910 2018-03-14 00:57:00 2018-03-14        1         0
7911 2018-03-14 00:58:00 2018-03-14        1         0
7912 2018-03-14 00:59:00 2018-03-14        1         0

我想按hour为每个日期对所有内容进行分组(如果我使用hour列,我不介意,或者值是否按HH值分组date列,并列出每小时组的累计availablebusy

我想要的输出df看起来像(请注意,这些是虚拟值,而不是实际值)

  date                    available busy
1 2018-03-01 01:00:00     1         6   
2 2018-03-01 02:00:00     2         11  
3 2018-03-01 03:00:00     10        8 
...
450 2018-03-14 08:00:00   11        1 
451 2018-03-14 09:00:00   24        19
452 2018-03-14 10:00:00   12        4

1 个答案:

答案 0 :(得分:1)

这是样本数据:

enter image description here

这是执行此操作的dplyr代码:

library(lubridate)
df2 <- df %>% 
  group_by(hour) %>%
  summarize(
    available = sum(available),
    busy = sum(available)
  ) %>%
  ungroup()