сортировать данные на основе промежутка времени в г - PullRequest
0 голосов
/ 03 сентября 2018
user<-as.factor(c(1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3))
date<-as.Date(c("2018-01-21", "2018-01-21", "2018-01-21","2018-01-21", "2018-01-24",
            "2018-01-21","2018-01-21","2018-01-21", "2018-01-21","2018-01-21","2018-02-14",
            "2018-01-22", "2018-05-13","2018-05-17","2018-05-17", "2018-05-17"))    
hour<-as.factor(c("11:23", "11:25", "13:26", "13:44", "13:52", "09:17", "09:18", "09:22", "12:04", "12:06", "14:20", "17:30", "08:54", "12:24", "12:26", "13:05"))

df<-data.frame(user, date, hour)
str(df)

   user       date  hour
1     1 2018-01-21 11:23
2     1 2018-01-21 11:25
3     1 2018-01-21 13:26
4     1 2018-01-21 13:44
5     1 2018-01-24 13:52
6     2 2018-01-21 09:17
7     2 2018-01-21 09:18
8     2 2018-01-21 09:22
9     2 2018-01-21 12:04
10    2 2018-01-21 12:06
11    2 2018-02-14 14:20
12    3 2018-01-22 17:30
13    3 2018-05-13 08:54
14    3 2018-05-17 12:24
15    3 2018-05-17 12:26
16    3 2018-05-17 13:05

Я долго искал, но, похоже, не могу найти ответ на свой вопрос. Здесь есть фрейм данных, похожий на этот. Я пытаюсь добавить новую колонку под названием «пробная версия», которая будет измерять каждую 60-минутную пробную версию для каждого участника в день. Это не проблема, когда в день проводится только одно испытание, но иногда их несколько. До сих пор я пытался использовать функцию cumsum из пакета data.table, но она не учитывает дату. Я пытаюсь получить это в конце концов:

   user       date  hour trial
1     1 2018-01-21 11:23     1
2     1 2018-01-21 11:25     1
3     1 2018-01-21 13:26     2
4     1 2018-01-21 13:44     2
5     1 2018-01-24 13:52     3
6     2 2018-01-21 09:17     1
7     2 2018-01-21 09:18     1
8     2 2018-01-21 09:22     1
9     2 2018-01-21 12:04     2
10    2 2018-01-21 12:06     2
11    2 2018-02-14 14:20     3
12    3 2018-01-22 17:30     1
13    3 2018-05-13 08:54     1
14    3 2018-05-17 12:24     1
15    3 2018-05-17 12:26     1
16    3 2018-05-17 13:05     1

Я не уверен, должен ли я использовать цикл или что-то еще. Для этого должно быть простое и элегантное решение, которого я не вижу. Спасибо!

...