Я хочу создать лаговую переменную на основе следующих дополнительных условий и операций:
Когда лаг (предыдущая строка) переменной (day_active) равен 1, он также должен Возьмите лаг переменной n_wins
Когда лаг (предыдущая строка) для day_active равен 0, он должен просто повторять значение n_wins предыдущей строки, пока day_active остается равным 0.
Предположим, мы наблюдаем за игроком в течение десяти дней. day_active указывает, был ли он активным в тот день, а n_wins указывает количество выигранных им игр.
Example dataset:
da = data.frame(day = c(1,2,3,4,5,6,7,8,9,10), day_active = c(1,1,0,0,1,1,0,0,1,1), n_wins = c(2,3,0,0,1,0,0,0,0,1))
da
day day_active n_wins
1 1 1 2
2 2 1 3
3 3 0 0
4 4 0 0
5 5 1 1
6 6 1 0
7 7 0 0
8 8 0 0
9 9 1 0
10 10 1 1
Вот как это должно выглядеть после трансформации:
da2 = data.frame(day = c(1,2,3,4,5,6,7,8,9,10), day_active = c(1,1,0,0,1,1,0,0,1,1), n_wins = c(2,3,0,0,1,0,0,0,0,1), lag_n_wins = c(NA,2,3,3,3,1,0,0,0,0))
da2
day day_active n_wins lag_n_wins
1 1 1 2 NA
2 2 1 3 2
3 3 0 0 3
4 4 0 0 3
5 5 1 1 3
6 6 1 0 1
7 7 0 0 0
8 8 0 0 0
9 9 1 0 0
10 10 1 1 0