Как я могу сравнить значения в переменной, зависящей от другой переменной, с помощью dplyr?
Значение df основано на данных выбора (длинный формат) из опроса.Он имеет одну переменную, которая указывает участников id , другую, которая указывает на выбор inst ance, и одну, которая указывает, какой alt ernative был выбран.В моих данных я чувствую, что многие люди устают от этой задачи и поэтому придерживаются одной альтернативы для каждого случая.Поэтому я хотел бы определить людей, которые всегда выбирали одну и ту же опцию от определенного экземпляра до конца.
Вот пример df:
set.seed(0)
df <- tibble(
id = rep(1:5,each=12),
inst = rep(1:12,5),
alt = sample(1:3, size =60, replace=T),
)
Это выглядит следующим образом:
id inst alt
1 1 1 3
2 1 2 1
3 1 3 2
4 1 4 2
5 1 5 3
6 1 6 1
7 1 7 3
8 1 8 3
9 1 9 2
10 1 10 2
11 1 11 1 <-
12 1 12 1 <-
13 2 1 1
14 2 2 3
...
Я хотел бы создать две новые переменные count и count_alt .Новая переменная count должна указывать, как часто одно и то же значение появляется в alt на основе id и inst , считая только значения с конца id .Таким образом, для участника (id == 1) переменная count должна быть равна 2, поскольку альтернатива 1 была выбрана в последних двух случаях (11 и 12). count_alt будет принимать значение 1 (всегда то же самое, что inst == 12)
Новый df должен выглядеть следующим образом
id inst alt count count_alt
1 1 1 3 2 1
2 1 2 1 2 1
3 1 3 2 2 1
4 1 4 2 2 1
5 1 5 3 2 1
6 1 6 1 2 1
7 1 7 3 2 1
8 1 8 3 2 1
9 1 9 2 2 1
10 1 10 2 2 1
11 1 11 1 2 1
12 1 12 1 2 1
...
Я бы предпочелРешите это с помощью dplyr, а не с помощью цикла, так как я хочу включить его в дальнейшие шаги по обработке данных.