#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 утра