У меня есть набор данных, который кодирует переходы между единицами, как эта, где Единица А - это единица, которая заменяет Единицу В в конкретную дату. После того, как блок A заменяет блок B, он становится активным.
Unit A | Transition Date | Unit B
---------------------------------
xxx04 | 1/1/2020 | xxx03
xxx03 | 15/7/2019 | xxx02
xxx02 | 12/6/2005 | xxx01
aaa02 | 19/6/2015 | aaa01
bbb03 | 23/5/2010 | bbb02
bbb02 | 1/4/2009 | bbb01
Фактический набор данных содержит около 30 000 переходов, которые варьируются между 1 переходом и 30.
Что я хочу знать для каждой единицы в наборе данных (как единиц A, так и B), если она является частью цепочки единиц, то какая конечная единица в цепочке. Поэтому я думаю, что окончательный набор данных должен выглядеть следующим образом:
Unit | Final Unit
------------------
xxx01 | xxx04
xxx02 | xxx04
xxx03 | xxx04
xxx04 | xxx04
aaa01 | aaa02
aaa02 | aaa02
bbb01 | bbb03
bbb02 | bbb03
bbb03 | bbb03
Исходя из моего поиска в Google, я думаю, что это проблема с графом, когда мне нужно кодировать путь между узлами и найти конечный узел на тропинка. Но я не уверен, как на самом деле написать код на R, чтобы сделать это. Я думаю, что это будет включать в себя рекурсивную функцию, которая зацикливается на элементах.
В идеале мне бы хотелось получить ответ в базовой R / tidyverse, а не использовать некоторую библиотеку графов, такую как igraph, чтобы я мог действительно понять, что происходит механическим способом.