@ Анико отмечает, что одним из способов решения моей проблемы является то, что мне нужно найти связанные компоненты графа, где вершины называются группами, а переменные group
и nominated_group
указывают ребра между этими двумя группами. , Моя цель - создать переменную parent_Group
, которая индексирует подключенные компоненты. Или, как я сказал раньше:
У меня есть фрейм данных с четырьмя переменными: ID
, group
, nominated_ID
и nominated_Group
.
Рассмотрим сестринские группы: группы A и B являются сестринскими группами, если в данных есть хотя бы один случай, когда group == A и nominated_group == B, или наоборот.
Я хотел бы создать переменную parent_group
, которая принимает уникальное значение для каждого набора сестринских групп. Другими словами, не должно быть назначений между случаями в разных parent_group
с. Создание parent_group
последовательных чисел кажется хорошей идеей.
Большое спасибо за помощь, которую я уже получил здесь ! Я не могу здесь внести свой вклад, но учтите, что я пытаюсь оплатить его вперед в stats.exchange и в википедии.
По моим поддельным данным, A и B - сестринские группы. Для подтверждения этого достаточно либо ID дела = 4, либо ID = 5. Каждая группа также является собственной сестринской группой. Цель, создание parent_group
, должна привести к одному parent_group
для всех случаев в A или B и другому parent_group
для группы C
df <- data.frame(ID = c(9, 5, 2, 4, 3, 7),
group = c("A", "A", "B", "B", "A", "C"),
nominated_ID = c(9, 8, 4, 9, 2, 7) )
df$nominated_group <- with(df, group[match(nominated_ID, ID)])
df
ID group nominated_ID nominated_group
1 9 A 9 A
2 5 A 8 <NA>
3 2 B 4 B
4 4 B 9 A
5 3 A 2 B
6 7 C 7 C