2012-08-29 16 views

Odpowiedz

19

head i tail są naprawdę przydatnymi funkcjami!

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

Jeśli chcesz pierwsze 50 wiersze data.frame, można użyć funkcji arrange z plyr aby posortować data.frame a następnie użyć head

library(plyr) 

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

Zauważ, że zawinięte w profits połączenie z numerem desc, co oznacza, że ​​będzie sortować w kolejności malejącej.

Aby pracować bez plyr

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

Bóg kocham plyr. – bstockton

7

użytkowania order aby posortować data.frame, a następnie użyć head dostać tylko pierwsze 50 wierszy.

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

Możesz użyć rank z dplyr.

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

ta sortuje dane w porządku malejącym i tylko utrzymuje wartości gdzie Rank jest mniejsza lub równa 50 (czyli 50).
Dplyr jest bardzo przydatny. Polecenia i składnia łańcuchów są bardzo łatwe do zrozumienia. 10/10 polecałbym.

+0

można również użyć 'top_n (n = 50, wt = zyski)' zamiast 'filter (...)' – andrasz

0

Mnel ma rację, że ogólnie rzecz biorąc, chcesz używać funkcji head() i tail() wraz z funkcją sortowania. Powinienem jednak wspomnieć, że dla średnich zbiorów danych metoda Vince'a działa szybciej. Jeśli nie używać głowę lub ogon()(), a następnie można stosować podstawowe operatora podrozdział rozmowę [] ....

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,] 

Jednakże, naprawdę polecam głowę(), ogon() lub filter() działa, ponieważ zwykły operator [] zakłada, że ​​twoje dane są uporządkowane w łatwo rysowanym formacie tablicy lub macierzy. (Mam nadzieję, że to odpowiada na pytanie Teji).

Teraz, który z wybieranych przez ciebie pakietów jest w dużej mierze subiektywny. Jednak czytając komentarze ludzi, powiem, że wybór użycia uporządkowania(), {bases} zlecenia plyr() z {utils} head() i ogonami, lub plyr() w dużej mierze zależy od rozmiaru pamięci i rozmiaru wiersza twój zestaw danych. Mógłbym bardziej szczegółowo opisać, jak Plyr i czasami Dplyr mają problemy z dużymi złożonymi zestawami danych, ale nie chcę rezygnować z tematu.

P.S. Jest to jedna z moich pierwszych odpowiedzi, więc opinie są mile widziane.