Мой набор данных выглядит так:

Позвольте мне объяснить мой фрейм данных. У меня есть два столбца с именами «отметка времени» и «метка». Столбец «метка» содержит уникальное количество значений, возникших по отношению к столбцу «отметка времени».
Я могу найти количество вхождений уникальных переменных в столбце метка за все время, используя функцию агрегирования и подсчета, доступную в R.
Но теперь я хочу подсчитать количество появлений уникальных переменных в столбце метка относительно отметка времени с интервалом в 2 минуты.
Чтобы быть точным, это то, что я ищу в своем выводе:

Вы можете найти фрейм данных здесь, используя dput в R.
x <- data.frame(timeStamp = c("20:12:14","20:12:14","20:13:02","20:13:02","20:13:55","20:13:55","20:14:14","20:14:14","20:14:25","20:14:26","20:14:26","20:14:26","20:15:26","20:15:28","20:15:36","20:15:37","20:16:41","20:16:49","20:17:20","20:17:21"), label = c("003_T04_Ward Login","003_T04_Ward Login","002_T05_SearchPatient","002_T05_SearchPatient","003_T04_Ward Login","003_T04_Ward Login","002_T05_SearchPatient","002_T05_SearchPatient","001_T09_Submit Payment","001_T09_Submit Payment","001_T09_Submit Payment","001_T09_Submit Payment","002_T05_SearchPatient","002_T05_SearchPatient","003_T04_Ward Login","003_T04_Ward Login","002_T05_SearchPatient","002_T05_SearchPatient","003_T04_Ward Login","003_T04_Ward Login"
))
dput(x)
Я не могу найти желаемый результат, поэтому я разместил изображение того, что должно понравиться моему выводу. Вы можете мне в этом помочь?
Мы не можем копировать изображения для тестирования. По этой причине мы запрашиваем dput.
Спасибо, arkun, я предоставил небольшой воспроизводимый пример с использованием dput. Вы можете проверить его выше.





Вот решение tidyverse:
# Create 2 min breakpoints by which we group times
hm <- function(x) as.POSIXct(x, format = "%H:%M")
breaks <- seq(min(hm(x$timeStamp)), max(hm(x$timeStamp)) + 120, by = '2 min');
library(tidyverse);
x %>%
mutate(
timeStamp = cut(hm(timeStamp), breaks = breaks)) %>%
count(timeStamp, label) %>%
spread(label, n)
## A tibble: 3 x 4
# timeStamp `001_T09_Submit Pa… `002_T05_SearchPat… `003_T04_Ward Lo…
# <fct> <int> <int> <int>
#1 2018-04-13 20:12:00 NA 2 4
#2 2018-04-13 20:14:00 4 4 2
#3 2018-04-13 20:16:00 NA 2 2
Объяснение: Мы создаем 2-минутные точки останова, с помощью которых мы cut составляем час + минута timeStamp; затем count на 2 минуты сгруппированы по времени и помечаются, и распространяются от длинного до широкого.
x <- data.frame(
timeStamp = c("20:12:14","20:12:14","20:13:02","20:13:02","20:13:55","20:13:55","20:14:14","20:14:14","20:14:25","20:14:26","20:14:26","20:14:26","20:15:26","20:15:28","20:15:36","20:15:37","20:16:41","20:16:49","20:17:20","20:17:21"),
label = c("003_T04_Ward Login","003_T04_Ward Login","002_T05_SearchPatient","002_T05_SearchPatient","003_T04_Ward Login","003_T04_Ward Login","002_T05_SearchPatient","002_T05_SearchPatient","001_T09_Submit Payment","001_T09_Submit Payment","001_T09_Submit Payment","001_T09_Submit Payment","002_T05_SearchPatient","002_T05_SearchPatient","003_T04_Ward Login","003_T04_Ward Login","002_T05_SearchPatient","002_T05_SearchPatient","003_T04_Ward Login","003_T04_Ward Login" ))
Покажите небольшой воспроизводимый пример с использованием
dputвместо изображений