Agregar um quadro de dados com base em pares não ordenados de colunas
Eu tenho um conjunto de dados que é algo como isto:
id1 id2 size
1 5400 5505 7
2 5033 5458 1
3 5452 2873 24
4 5452 5213 2
5 5452 4242 26
6 4823 4823 4
7 5505 5400 11
Ondeid1
eid2
são nós únicos em um gráfico esize
é um valor atribuído aodirigido borda conectando-osde id1
para id2
. Esse conjunto de dados é bastante grande (pouco mais de 2 milhões de linhas). O que eu gostaria de fazer é somar a coluna de tamanho, agrupada porpares de nós não ordenados doid1
eid2
. Por exemplo, na primeira fila, temosid1=5400
eid2=5505
. Existe outra linha no quadro de dados ondeid1=5505
eid2=5400
. Nos dados agrupados, a soma das colunas de tamanho dessas duas linhas seria adicionada a uma única linha. Então, em outras palavras, quero resumir os dados em que estou agrupando em um conjunto (não-ordenado) de (id1, id2). Eu encontrei uma maneira de fazer isso usandoapply
com uma função personalizada que verifica o par de colunas invertidas no conjunto de dados completo, mas isso funciona incrivelmente lento. Alguém sabe de uma maneira de fazer isso de outra maneira, talvez complyr
ou com algo nos pacotes de base que seria mais eficiente?