根据标准计算值

时间:2018-03-19 12:25:21

标签: r

我有一个数据框,其中一列包含时间数据(YYYY-MM-DD hh:mm:ss),另一列包含工作人员可用性数据(特定时间可用的工作人员数)。

我想计算hour相同(00 - 23之间)和minute值介于00 - 59之间的可用工作人员数量。

考虑此示例数据框(df):

TIME                   STAFF_AVAIL
2018-01-01 06:58:53    05
2018-01-01 07:00:00    10
2018-01-01 07:04:45    20
2018-01-01 07:04:55    25
2018-01-01 07:21:00    20
2018-01-01 07:58:04    18
2018-01-01 07:59:59    12
2018-01-01 08:00:00    17
2018-01-01 08:01:04    30

我想在下一个小时开始之前计算每小时可用的工作人员数量,直到一秒钟(包括在内)。

df为例,我想计算小时值等于7的可用人员数量,以及相应的分钟数在00 - {{1 (包含)。

在此示例中,597:00:00之间可用的工作人员数量为08:00:00105)。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

以下是lubridatedplyr解决方案:

library(lubridate);
library(dplyr);
df %>%
    mutate(
        TIME = ymd_hms(TIME),
        TIME.hr.bin = floor_date(TIME, unit = "hour")) %>%
    group_by(TIME.hr.bin) %>%
    summarise(n = sum(STAFF_AVAIL));
#  TIME.hr.bin             n
#  <dttm>              <int>
#1 2018-01-01 06:00:00     5
#2 2018-01-01 07:00:00   105
#3 2018-01-01 08:00:00    47

样本数据

df <- read.table(text =
    "TIME                   STAFF_AVAIL
'2018-01-01 06:58:53'    05
'2018-01-01 07:00:00'    10
'2018-01-01 07:04:45'    20
'2018-01-01 07:04:55'    25
'2018-01-01 07:21:00'    20
'2018-01-01 07:58:04'    18
'2018-01-01 07:59:59'    12
'2018-01-01 08:00:00'    17
'2018-01-01 08:01:04'    30", header = T)