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?

questionAnswers(3)

yourAnswerToTheQuestion