【问题标题】:Count values based on criteria [duplicate]根据标准计算值[重复]
【发布时间】:2018-03-19 12:25:20
【问题描述】:

我有一个数据框,其中一列包含时间数据 (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-59(含)之间的可用员工数量。

在此示例中,7:00:0008:00:00 之间的可用员工数量为 105 (10 + 20 + 25 + 20 + 18 + 12)。

我怎样才能做到这一点?

【问题讨论】:

  • 基础 R:cut.Date + aggregate

标签: r


【解决方案1】:

这是一个lubridate 加上dplyr 的解决方案:

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)

【讨论】:

    猜你喜欢
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 2013-10-04
    • 2022-01-07
    • 2021-05-07
    相关资源
    最近更新 更多