У меня длинный список парных взаимодействий между людьми.Мне нужно назначить инициатора для каждой пары наугад.Поэтому для каждой пары будет один человек, которому назначено 1
, а другому будет присвоено 0
.
Я попытался найти ответ на этот вопрос, так как считаю, что он должен быть решен.где-то.К сожалению, я не думаю, что мне удастся найти правильные ключевые слова.Следующий ответ был наиболее полезным:
Нумерация строк в группах во фрейме данных
Вот некоторый фиктивный код и где я нахожусь (реальные данные имеют многобольше столбцов и строк):
dummy_data <- tibble(
ID = c(1, 1, 2, 2, 3, 3),
Sex = c("M", "F", "F", "M", "F", "M")
)
dummy_data <- dummy_data %>%
group_by(ID) %>%
mutate(initiator = ifelse(row_number() == 1,
sample(0:1, 1),
(1 - row_number()[1])
)
)
Идея заключается в том, что я назначу случайное значение первому человеку в каждой паре, а затем приму противоположное значение для второго.
Проблема, с которой я сталкиваюсь, заключается в «ложной» части функции ifelse()
- я не могу получить значение предыдущей строки.
Желаемый вывод - это новый столбец, состоящий из *Только 1019 * с и 1
с, где у каждой пары есть только один 0
и один 1
.