Генерация списка ребер из идентификатора и векторов группировки
У меня есть фрейм данных из 205 000+ строк, отформатированных следующим образом:
df <- data.frame(project.id = c('SP001', 'SP001', 'SP001', 'SP017', 'SP018', 'SP017'),
supplier.id = c('1224', '5542', '7741', '1224', '2020', '9122'))
В фактическом фрейме данных имеется более 6700 уникальных значенийproject.id
, Я хотел бы создать пограничный список, который объединяет поставщиков, которые работали над одним проектом.
Желаемый конечный результат дляproject.id = SP001
:
to from
1224 5542
1224 7741
5542 7741
До сих пор я пытался использоватьsplit
создать список с помощью project.id и затем запуститьlapply+combn
генерировать все возможные комбинацииsupplier.id
в каждом списке / группе:
try.list <- split(df, df$project.id)
try.output <- lapply(try.list, function(x) combn(x$supplier.id, 2))
Есть ли более элегантный / эффективный (читай «вычислено менее чем за 2 часа») способ создания чего-то подобного?
Любая помощь приветствуется