Моя цель - создать новый столбец df, значения которого основаны на двух других столбцах. Мой набор данных касается набора в исследование. Я бы хотел колонку, которая определяет, был ли человек в определенном раунде исследования, если это было его первое участие, его второе, третье и так далее (до 8 раундов). В настоящее время я пытаюсь сделать это с помощью mutate(case_when))
в dplyr и использовать lag()
. Однако, это работает неправильно, если человек пропустил этап исследования и позже вернулся в него. Набор данных выглядит следующим образом:
person | round | in_round |
A 1 1
A 2 1
A 3 1
A 4 1
A 5 1
A 6 0
A 7 0
A 8 0
B 1 0
B 2 0
B 3 1
B 4 1
B 5 1
B 6 1
B 7 0
B 8 1
Мне нужен отдельный столбец, который использует round
и in_round
для каждого человека для получения следующего:
person | round | in_round | round_status
A 1 1 recruited
A 2 1 follow_up_1
A 3 1 follow_up_2
A 4 1 follow_up_3
A 5 1 follow_up_4
A 6 0 none
A 7 0 none
A 8 0 none
B 1 0 none
B 2 0 none
B 3 1 recruited
B 4 1 follow_up_1
B 5 1 follow_up_2
B 6 1 follow_up_3
B 7 0 none
B 8 1 follow_up_4
In резюме:
- где
in_round == 0
, round_status == "none"
- в первый раз
in_round == 1
, round_status == "recruited"
- последующие времена
in_round == 1
, round_status == "follow_up_X"
(зависит от количества предыдущих волн, в которых присутствовал индивидуум).