Агрегировать фрейм данных на основе неупорядоченных пар столбцов

У меня есть набор данных, который выглядит примерно так:

     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

гдеid1 а такжеid2 являются уникальными узлами в графе, иsize это значение, присвоенноенаправленный край, соединяющий ихиз id1 в id2, Этот набор данных довольно большой (чуть более 2 миллионов строк). То, что я хотел бы сделать, это сумма столбца размера, сгруппированных понеупорядоченные пары узлов изid1 а такжеid2, Например, в первом ряду мы имеемid1=5400 а такжеid2=5505, Существует еще одна строка во фрейме данных, гдеid1=5505 а такжеid2=5400, В сгруппированных данных сумма столбцов размера для этих двух строк будет добавлена в одну строку. Другими словами, я хочу обобщить данные, по которым я группируюсь, на (неупорядоченном) наборе (id1, id2). Я нашел способ сделать это с помощьюapply с пользовательской функцией, которая проверяет обратную пару столбцов в полном наборе данных, но это работает мучительно медленно. Кто-нибудь знает способ сделать это по-другому, возможно, сplyr или с чем-то в базовых пакетах, что будет более эффективным?

Ответы на вопрос(3)

Ваш ответ на вопрос