Наиболее частые по времени шаги

#r #dataframe

#r #фрейм данных

Вопрос:

Я хочу определить наиболее частое действие, основанное на временных шагах. Например, следующий data.frame содержит 2 столбца, один из которых записывает время, а другой — активность, выполненную на определенном временном шаге.

 df<-structure(list(time = structure(c(121L, 122L, 123L, 124L, 125L, 
126L, 127L, 128L, 129L, 130L, 131L, 132L, 133L, 134L, 135L, 136L, 
137L, 138L, 139L, 140L, 141L, 142L, 143L, 144L, 1L, 2L, 3L, 4L, 
5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 
19L, 20L, 21L, 22L, 23L, 24L, 25L, 88L, 89L, 90L, 91L, 92L, 93L, 
94L, 95L, 96L, 97L, 98L, 99L, 100L, 101L, 102L, 103L, 104L, 105L, 
106L, 107L, 108L, 109L, 110L, 111L, 112L, 113L, 117L, 118L, 119L, 
120L, 121L, 122L, 123L, 124L, 125L, 126L, 127L, 128L, 129L, 130L, 
131L, 132L, 133L, 134L, 135L, 136L, 137L, 138L, 139L, 140L, 141L
), .Label = c("04:00", "04:10", "04:20", "04:30", "04:40", "04:50", 
"05:00", "05:10", "05:20", "05:30", "05:40", "05:50", "06:00", 
"06:10", "06:20", "06:30", "06:40", "06:50", "07:00", "07:10", 
"07:20", "07:30", "07:40", "07:50", "08:00", "08:10", "08:20", 
"08:30", "08:40", "08:50", "09:00", "09:10", "09:20", "09:30", 
"09:40", "09:50", "10:00", "10:10", "10:20", "10:30", "10:40", 
"10:50", "11:00", "11:10", "11:20", "11:30", "11:40", "11:50", 
"12:00", "12:10", "12:20", "12:30", "12:40", "12:50", "13:00", 
"13:10", "13:20", "13:30", "13:40", "13:50", "14:00", "14:10", 
"14:20", "14:30", "14:40", "14:50", "15:00", "15:10", "15:20", 
"15:30", "15:40", "15:50", "16:00", "16:10", "16:20", "16:30", 
"16:40", "16:50", "17:00", "17:10", "17:20", "17:30", "17:40", 
"17:50", "18:00", "18:10", "18:20", "18:30", "18:40", "18:50", 
"19:00", "19:10", "19:20", "19:30", "19:40", "19:50", "20:00", 
"20:10", "20:20", "20:30", "20:40", "20:50", "21:00", "21:10", 
"21:20", "21:30", "21:40", "21:50", "22:00", "22:10", "22:20", 
"22:30", "22:40", "22:50", "23:00", "23:10", "23:20", "23:30", 
"23:40", "23:50", "00:00", "00:10", "00:20", "00:30", "00:40", 
"00:50", "01:00", "01:10", "01:20", "01:30", "01:40", "01:50", 
"02:00", "02:10", "02:20", "02:30", "02:40", "02:50", "03:00", 
"03:10", "03:20", "03:30", "03:40", "03:50"), class = "factor"), 
    activity = c(110, 110, 110, 110, 110, 110, 110, 110, 110, 
    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 
    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 
    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 
    111, 310, 310, 310, 3210, 3210, 3210, 210, 210, 210, 210, 
    210, 210, 8210, 8210, 8210, 8210, 8210, 8210, 8210, 8210, 
    8210, 8210, 8210, 8210, 8210, 8210, 8210, 8210, 8210, 110, 
    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 
    110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110
    )), row.names = c(NA, 100L), class = "data.frame")
  

Я хотел бы иметь фрейм данных с 3 столбцами времени, активности и количества встреч.

В столбце количество встреч записывается частота наиболее частых действий на заданном временном шаге.

Пример

   time  activity occurrence count (example )
    04:00  110         100
    04:10  110         100
  

Как это можно сделать в R?

Комментарии:

1. Может быть aggregate(activity ~ time, df, function(x) names(sort(-table(x)))[1])

2. Можете ли вы привести конкретный пример и показать ожидаемый результат. Например, между 19 и 22?

3. @Gki спасибо, работает еще один вопрос, как можно также вернуть количество раз, когда это происходит, так что в основном не только наиболее часто, но и сколько раз наиболее часто происходило? Спасибо

4. Значит, ваши реальные данные охватывают гораздо больше, чем 24 часа?

5. @ нет, это 24 часа, начиная с 4 часов ночи и заканчивая 3:50 утра