Ho un grande frame di dati (1616610 righe, 255 colonne) e devo incollare insieme i valori univoci di ogni colonna in base a una chiave.Aggregazione di tutti i valori univoci di ciascuna colonna del frame di dati
Ad esempio:
> data = data.frame(a=c(1,1,1,2,2,3),
b=c("apples", "oranges", "apples", "apples", "apples", "grapefruit"),
c=c(12, 22, 22, 45, 67, 28),
d=c("Monday", "Monday", "Monday", "Tuesday", "Wednesday", "Tuesday"))
> data
a b c d
1 1 apples 12 Monday
2 1 oranges 22 Monday
3 1 apples 22 Monday
4 2 apples 45 Tuesday
5 2 apples 67 Wednesday
6 3 grapefruit 28 Tuesday
Ho bisogno di aggregare ogni valore univoco in ciascuna delle colonne 255, e restituire un nuovo frame di dati con separatori virgola per ogni valore univoco. Come questo:
a b c d
1 1 apples, oranges 12, 22 Monday
2 2 apples 45, 67 Tuesday, Wednesday
3 3 grapefruit 28 Thursday
Ho provato using aggregate
, in questo modo:
output <- aggregate(data, by=list(data$a), paste, collapse=", ")
ma per un frame di dati questa dimensione, è stato troppo dispendio di tempo (ore), e spesso ho per uccidere il processo tutti insieme. Inoltre, questo aggregherà tutti i valori e non solo quelli unici. Qualcuno ha qualche consigli su:
1) come migliorare il tempo di questa aggregazione per grandi insiemi di dati
2) quindi ottenere i valori unici di ogni campo
BTW, questo è il mio primo post su SO, quindi grazie per la vostra pazienza.
Per quelle dimensioni, probabilmente stai andando ad avere bisogno di dati ' .table'. Non sono eccezionale con la sua sintassi, ma ci sono persone che lo sono. – alistaire
grazie @alistaire. Ho sentito cose buone su 'data.table' per grandi set di dati, e ho provato a lavorare con esso, ma non riesco a capire la sintassi per questo problema. – bab2155
Grazie @ G.Grothendieck! Ciò ha funzionato bene – bab2155