2012-08-29 11 views

risposta

19

head e tail sono funzioni davvero utili!

head(sort(Forbes2000$profits,decreasing=TRUE), n = 50) 

Se si desidera che le prime 50 righe del data.frame, quindi è possibile utilizzare la funzione di arrange da plyr per ordinare la data.frame e quindi utilizzare head

library(plyr) 

head(arrange(Forbes2000,desc(profits)), n = 50) 

Si noti che ho avvolto in profits una chiamata a desc che significa che ordinerà in ordine decrescente.

lavorare senza plyr

head(Forbes2000[order(Forbes2000$profits, decreasing= T),], n = 50) 
+0

Dio, io amo plyr. – bstockton

7

Usa order per ordinare l'data.frame, quindi utilizzare head per ottenere solo le prime 50 righe.

data("Forbes2000", package = "HSAUR") 
head(Forbes2000[order(Forbes2000$profits, decreasing=TRUE), ], 50) 
2

È possibile utilizzare rank da dplyr.

library(dplyr) 
    top_fifty <- Forbes2000 %>% 
     filter(rank(desc(profits))<=50) 

Questo smista i dati in ordine decrescente e mantiene solo i valori in cui la posizione è inferiore o uguale a 50 (cioè la parte superiore 50).
Dplyr è molto utile. I comandi e la sintassi concatenata sono molto facili da capire. 10/10 lo consiglierei.

+0

si potrebbe anche usare 'top_n (n = 50, wt = profits)' invece di 'filter (...)' – andrasz

0

Mnel ha ragione che in generale, si desidera utilizzare le funzioni head() e tail() insieme a una funzione di ordinamento. Devo dire però che per i set di dati medi il metodo di Vince funziona più velocemente. Se non è stato utilizzato testa() o la coda(), allora si potrebbe utilizzare l'operatore di call sottosezione di base [] ....

library(plyr) 
x = arrange(Forbes2000,desc(profits)) 
x = x[1:50,] 
#Or using Order 
x = Forbes2000[order(Forbes2000$profits, decreasing= T),] 
x = x[1:50,] 

Tuttavia, ho davvero consigliare la testa(), la coda() , o filter() funziona perché l'operatore regolare [] presuppone che i dati siano strutturati in un array o in un formato matriciale facilmente tracciabile. (Si spera che questo risponda alla domanda di Teja)

Ora, il pacakage scelto è in gran parte soggettivo. Comunque leggendo i commenti delle persone, dirò che la scelta di usare plyr's arrange(), l'ordine di {basi}() con {utils} head() e tails, o plyr() dipende in gran parte dalla dimensione della memoria e dalla dimensione della riga di il tuo set di dati. Potrei entrare in maggiori dettagli su come Plyr e, a volte, Dplyr abbiano problemi con insiemi di dati complessi di grandi dimensioni, ma non voglio andare fuori tema.

P.S. Questa è una delle mie prime volte a rispondere in modo che il feedback sia apprezzato.