나는 시작 30 분 휴식과 시간 간격을 만들기 위해 몇 가지 어려움이 중 전체 시간의 00 또는 전체 시간의 00 및 30 분에 : 예를 들어계수 계수를 계산할 때 균등 간격 간격을 얻는 방법은 무엇입니까?
:
library(reshape2)
library(dplyr)
# Given some data which resemble the original data
foo <- data.frame(start.time = c("2012-02-01 13:47:00",
"2012-02-01 14:02:00",
"2012-02-01 14:20:00",
"2012-02-01 14:40:00",
"2012-02-01 15:08:00",
"2012-02-01 16:01:00",
"2012-02-01 16:02:00",
"2012-02-01 16:20:00",
"2012-02-01 17:09:00",
"2012-02-01 18:08:00",
"2012-02-01 18:20:00",
"2012-02-01 19:08:00"
),
employee = c("mike","john","john","steven","mike","mike","mike","steven","mike","steven","mike","mike"))
start.time employee
#1 2012-02-01 13:47:00 mike
#2 2012-02-01 14:02:00 john
#3 2012-02-01 14:20:00 john
#4 2012-02-01 14:40:00 steven
#5 2012-02-01 15:08:00 mike
#6 2012-02-01 16:01:00 mike
#7 2012-02-01 16:02:00 mike
#8 2012-02-01 16:20:00 steven
#9 2012-02-01 17:09:00 mike
#10 2012-02-01 18:08:00 steven
#11 2012-02-01 18:20:00 mike
#12 2012-02-01 19:08:00 mike
# change factor to POSIXct
foo$start.time <- as.POSIXct(foo$start.time)
# long to wide
my_emp<- dcast(foo, start.time ~ employee, fun.aggregate = length)
# 30 min breaks
my_emp_ag<- my_emp %>% group_by(start.time = as.POSIXct(cut(start.time, breaks="30 min"))) %>%
summarize(john = sum(john),mike = sum(mike),steven = sum(steven))
# Missing intervalls
miss_interval <- data.frame(start.time=seq(from = min(as.POSIXct(my_emp$start.time)), to= max(as.POSIXct(my_emp$start.time)), by = "30 mins"))
# join old woth new
substitited <- left_join(miss_interval,my_emp_ag,by=c('start.time'))
# change NA to zero
substitited[is.na(substitited)] <- 0
start.time john mike steven
1 2012-02-01 13:47:00 1 1 0
2 2012-02-01 14:17:00 1 0 1
3 2012-02-01 14:47:00 0 1 0
4 2012-02-01 15:17:00 0 0 0
5 2012-02-01 15:47:00 0 2 0
6 2012-02-01 16:17:00 0 0 1
7 2012-02-01 16:47:00 0 1 0
8 2012-02-01 17:17:00 0 0 0
9 2012-02-01 17:47:00 0 0 1
10 2012-02-01 18:17:00 0 1 0
11 2012-02-01 18:47:00 0 1 0
2012-02-01 13:30:00
을 원하는대로 거의이다 2012-02-01 14:00:00
등등.
기본적으로 분을 00 또는 30으로 반올림 하시겠습니까? – Elin
안녕하세요 @ 엘린, 나는 같은 30 분 간격 내에서 emplees를 계산하고 싶습니다. 'dplyr'와'cut '을 사용하여 그룹화하는 것은 사용하기 아주 좋습니다. 그러나 나는 전체 시간 또는 해당 횟수와 함께 30 분으로 시간을 반올림하는 방법을 모릅니다. – Mamba
이렇게하면 2012-02-01 16:00:00부터 2012-02-01 16:30:00까지 총 3 개가 생깁니 까? "2012-02-01 16:01:00", "2012-02-01 16:02:00", "2012-02-01 16:20:00"로 생각하면됩니다. 요소에는 간격이 없으므로 요인. 그것들을 숫자로 생각하고 빈 너비를 만들어야합니다. – Elin