我有一个包含 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 小时内计算”)的方式来生成这样的东西?
任何帮助将非常感激