Ho un insieme di dati che assomiglia a questo:aggregare un frame di dati basato su coppia non ordinata di colonne
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
Dove id1
e id2
sono nodi unici in un grafico, e size
è un valore assegnato al diretto bordo collegandoli daid1
aid2
. Questo set di dati è abbastanza grande (poco più di 2 milioni di righe). Quello che vorrei fare è sommare la colonna della dimensione, raggruppata per coppie di nodi non ordinati di id1
e id2
. Ad esempio, nella prima riga, abbiamo id1=5400
e id2=5505
. Esiste un'altra riga nel frame dei dati dove id1=5505
e id2=5400
. Nei dati raggruppati, la somma delle colonne delle dimensioni per queste due righe verrebbe aggiunta a una singola riga. Quindi, in altre parole, voglio riassumere i dati su cui sto raggruppando un insieme (non ordinato) di (id1, id2). Ho trovato un modo per farlo usando apply
con una funzione personalizzata che controlla la coppia di colonne invertita nel set di dati completo, ma questo funziona atrocemente lento. Qualcuno sa di un modo per farlo in un altro modo, forse con plyr
o con qualcosa nei pacchetti di base che sarebbe più efficiente?
Credo che scrivere su diverse linee, invece composizioni sarebbero aiutare ° OP +, però, si digita più veloce di me – statquant
è possibile creare G1 e G2 in per argomento. – mnel
@mnel, è geniale. Farà la modifica. Qualche idea su come rimuovere le righe duplicate in base a 2 colonne senza una variabile temporanea? – Arun