次のようにフォーマットされた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 時間以内に計算」を読む) 方法はありますか?
どんな助けでも大歓迎です