Создать новый столбец на основе условия, существующего в дате перехода

Чтобы сделать этот вопрос более обобщенным, я считаю, что его также можно перефразировать следующим образом:Создание скользящей временной чувствительной переменной фактора, Хотя это необычное требование, его можно использовать для множества различных источников данных.

У меня есть серияnon-uniform time data с> 1 записью в день для тысяч пользователей. Я хочу создать новый столбецplayer_type это отслеживает скользящее 30-дневное определение их поведения. Поведение определяется тем, в какие игры они играют; колонка'games' является фактором gameA, gameB.

Таким образом, существует три типа поведения:

Эксклюзивно играет в GameA -'A'Эксклюзивно играет в GameB -'B'Играет в обе игры -'Hybrid'

Я хочу использовать этот новый столбец, чтобы увидеть изменения их игрового поведения с течением времени, а также подсчитать количество игроков в каждой группе за все время, чтобы увидеть, как они меняются.

Временные ряды крайне нерегулярны для каждого игрока. Игроки могут играть в различные типы игр в день или не играть в какие-либо игры в течение многих месяцев. Временные ряды нерегулярны для каждого игрока, поэтому запись создается только тогда, когда игрок играет в игру, поэтому я ожидаю, что решение может использовать фильтр, подобный следующему:

interval(current_date, current_date - new_period(days=30) (с использованием lubridate).

Вот пример набора данных. Имейте в виду, что он упрощен и тестирует смену за 1 день, поэтому простые методы, проверяющие запись раньше, на самом деле не будут работать. Если вы можете сделать лучший набор данных, пожалуйста, сообщите, и я отредактирую этот пост.

p <- c( 1,   1,   1,   2,   2,   2,   6,   6,   6)

g <- c('A', 'B', 'B', 'A', 'B', 'A', 'A', 'B', 'B')

d <- seq(as.Date('2014-10-01'), as.Date('2014-10-9'), by=1)

df <- data.frame(player_id = p, date = d, games = g)

В качестве вывода мне требуется:

 player_id       date games   type
1         1 2014-10-01     A      A (OR NA)
2         1 2014-10-02     B Hybrid
3         1 2014-10-03     B      B
4         2 2014-10-04     A      A (OR NA)
5         2 2014-10-05     B Hybrid
6         2 2014-10-06     A Hybrid
7         6 2014-10-07     A      A (OR NA)
8         6 2014-10-08     B Hybrid
9         6 2014-10-09     B      B

Решение должно быть что-то вродеapply через столбцы, и применить функцию, которая проверяет обратно 30 дней во времени, иifelse() Заявление, чтобы увидеть, в какие игры они играли.

Это очень похожий пост - и должен помочь решить эту проблему.Как сделать условную сумму, которая выглядит только между определенными критериями даты

Я также исследовал,rowwise() и условноmutates() используя dplyr, однако улов для меня является историческим компонентом времени.

Спасибо за помощь! Я не могу поблагодарить этот форум достаточно. Я буду проверять часто.

Ответы на вопрос(1)

Ваш ответ на вопрос