Erstellung einer Kantenliste aus ID und Gruppierung von Vektoren

Ich habe einen Datenrahmen mit über 205.000 Zeilen, der wie folgt formatiert ist:

df <- data.frame(project.id = c('SP001', 'SP001', 'SP001', 'SP017', 'SP018', 'SP017'),
                 supplier.id = c('1224', '5542', '7741', '1224', '2020', '9122'))

In dem tatsächlichen Datenrahmen gibt es 6700+ eindeutige Werte vonproject.id. Ich möchte eine Kantenliste erstellen, die Lieferanten zusammenfasst, die am selben Projekt gearbeitet haben.

Gewünschtes Endergebnis fürproject.id = SP001:

to     from
1224   5542
1224   7741
5542   7741

isher habe ich versucht mitsplit, um eine Liste von project.id zu erstellen und dann @ auszuführlapply+combn um alle möglichen Kombinationen von @ zu generiersupplier.id in jeder Liste / Gruppe:

try.list <- split(df, df$project.id)
try.output <- lapply(try.list, function(x) combn(x$supplier.id, 2))

Gibt es eine elegantere / effizientere Methode ("in weniger als 2 Stunden berechnet"), um so etwas zu generieren?

Jede Hilfe wäre sehr dankbar

Antworten auf die Frage(6)

Ihre Antwort auf die Frage