我有一个数据框,其中一列包含时间数据(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 (包含)。
在此示例中,59
和7:00:00
之间可用的工作人员数量为08:00:00
(105
)。
我怎样才能做到这一点?
答案 0 :(得分:0)
以下是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)