Sto cercando i modelli per la manipolazione degli oggetti data.table
la cui struttura è simile a quella dei dataframes creati con melt
dal pacchetto reshape2
. Mi occupo di tabelle di dati con milioni di righe. Le prestazioni sono critiche.Dati dati fuso veloci. Operazioni operabili
La forma generalizzata della domanda è se esiste un modo per eseguire il raggruppamento in base a un sottoinsieme di valori in una colonna e se il risultato dell'operazione di raggruppamento crea una o più nuove colonne.
Una specifica forma di domanda potrebbe essere come utilizzare data.table
per realizzare l'equivalente di ciò dcast
nella figura seguente:
input <- data.table(
id=c(1, 1, 1, 2, 2, 2, 3, 3, 3, 3),
variable=c('x', 'y', 'y', 'x', 'y', 'y', 'x', 'x', 'y', 'other'),
value=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
dcast(input,
id ~ variable, sum,
subset=.(variable %in% c('x', 'y')))
la cui uscita è
id x y
1 1 1 5
2 2 4 11
3 3 15 9
Sono confuso , mi dispiace - la funzione dcast() funziona senza la coazione di .data.frame(). stai provando a realizzare questo senza usare il pacchetto plyr? –
@AnthonyDamico si, mi piacerebbe farlo senza 'dcast' che è in' reshape2'. Ho rimosso as.data.frame() - grazie per averlo indicato. – Sim