Sto provando a comprimere un frame di dati rimuovendo tutte le righe tranne una da ogni gruppo di righe con valori identici in una particolare colonna. In altre parole, la prima riga di ogni gruppo.Blocco di frame di dati selezionando una riga per gruppo
Per esempio, vorrei convertire questo
> d = data.frame(x=c(1,1,2,4),y=c(10,11,12,13),z=c(20,19,18,17))
> d
x y z
1 1 10 20
2 1 11 19
3 2 12 18
4 4 13 17
In questa:
x y z
1 1 11 19
2 2 12 18
3 4 13 17
sto usando aggregata per fare questo momento, ma la prestazione è inaccettabile con più dati:
Ho provato split/unsplit con lo stesso argomento di funzione di qui, ma unsplit complains abo ut numeri di riga duplicati.
È una possibilità? Esiste un idioma R per convertire il vettore di lunghezza di rle negli indici delle righe che iniziano ogni esecuzione, che posso quindi utilizzare per estrarre quelle righe dal frame dei dati?
preferirei tutte le colonne, grazie – jkebinger
allora avete bisogno di aggiungere semplicemente un 'fase di lavorazione' per creare una variabile fattore sul quale plyr può loop. Tutto può essere fatto con i comandi di indicizzazione, provalo. E a proposito, sei incoerente tra il tuo testo (dicendo la prima riga selezionata) e l'esempio (mostrando la seconda riga). –
Ad ogni modo, il cross-posting tra r-help e qui è anche un po 'di scarso stile. Hai buone risposte a r-help, quindi perché non le studi? –