2012-08-29 7 views

答えて

19

headtailは本当に便利な機能です!

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

あなたはdata.frameの最初の50行をしたい場合は、あなたがdata.frameを並べ替えた後、私はprofitsを包んhead

library(plyr) 

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

お知らせを使用するplyrからarrange機能を使用することができますdescへの呼び出しは、降順で並べ替えることを意味します。最初の50行だけを取得するためにheadを使用し、その後、data.frameをソートするために使用order plyr

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

私はplyrを愛しています。 – bstockton

7

せずに動作するように

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

rankdplyrから使用できます。

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

これはデータを降順でソートし、ランクが50以下(つまり上位50)の値のみを保持します。
Dplyrは非常に便利です。コマンドと連鎖構文は非常に理解しやすいです。 10/10がおすすめです。

+0

'filter(...)'の代わりに 'top_n(n = 50、wt = profit)'を使うこともできます – andrasz

0

Mnelは一般的に、sort()関数と一緒にhead()関数とtail()関数を使いたいとします。中規模のデータセットの場合は、Vinceの方法がより速く動作すると言えます。あなたは頭()または尾を()を使用していない場合は、)(、)(尾を頭をお勧めします私は本当に、基本的なサブセクションの呼び出し演算子[] ....しかし

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

を使用でき、またはfilter()関数を使用します。通常の[]演算子は、データが簡単に描画された配列または行列形式で構造化されていると仮定しているためです。 (うまくいけば、これはTejaの質問に答えます)

あなたが選んだパカケは、主観的なものです。人々のコメントを読んでいても、{utils} head()とtailやplyr()でplyrのarrange()、{bases}のorder()を使う選択は、メモリサイズと行サイズに大きく依存するあなたのデータセットPlyrとDplyrが大規模な複雑なデータセットでどのように問題を抱えているかについて、より詳細に説明できますが、私はトピックから離れたくありません。

P.S.これは私の最初の回答の1つで、フィードバックが高く評価されています。

関連する問題