У меня есть набор данных на основе активности из игры, и я хочу объединить его в игровых сессиях. В некоторых случаях я наблюдаю за возобновлением игры непосредственно после начала игры или закрытия игры. Поскольку это не имеет смысла игровой сеанс, я хочу удалить эти наблюдения (каждое резюме игры, за которым следует а) начало игры или б) закрытие игры) из моего набора данных.
Упрощенные примеры данных:
game_da = data.frame(activity = c("gamestart", "activity1", "activity2", "gameclose", "gameresume", "gameclose", "gameresume", "activity1", "gameclose"))
game_da
activity
1 gamestart
2 activity1
3 activity2
4 gameclose
5 gameresume
6 gameclose
7 gameresume
8 activity1
9 gameclose
Ожидаемый результат:
game_da2 = data.frame(activity = c("gamestart", "activity1", "activity2", "gameclose", "gameresume", "activity1", "gameclose"))
game_da2
activity
1 gamestart
2 activity1
3 activity2
4 gameclose
5 gameresume
6 activity1
7 gameclose
То, что я пробовал (... но удаляет другие наблюдения, которые я хочу):
game_da3 = mutate(game_da, help_var = case_when( activity == "gameresume" |
+ activity == "gamestart" |
+ activity == "gameclose" ~ 1, TRUE ~ 0),
+ lead_help_var = lead(help_var),
+ diff_help_var = help_var + lead_help_var) %>%
+ filter(diff_help_var != 2)
game_da3
activity help_var lead_help_var diff_help_var
1 gamestart 1 0 1
2 activity1 0 0 0
3 activity2 0 1 1
4 gameresume 1 0 1
5 activity1 0 1 1