データフレームからトップ 'n'企業を取得しようとしています。以下は私のコードです。データフレームからトップn企業を降順に取得する方法
data("Forbes2000", package = "HSAUR")
sort(Forbes2000$profits,decreasing=TRUE)
ここで、この並べ替えられたベクトルから上位50個の観測値を取得したいと思います。
データフレームからトップ 'n'企業を取得しようとしています。以下は私のコードです。データフレームからトップn企業を降順に取得する方法
data("Forbes2000", package = "HSAUR")
sort(Forbes2000$profits,decreasing=TRUE)
ここで、この並べ替えられたベクトルから上位50個の観測値を取得したいと思います。
head
とtail
は本当に便利な機能です!
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)
せずに動作するように
。
data("Forbes2000", package = "HSAUR")
head(Forbes2000[order(Forbes2000$profits, decreasing=TRUE), ], 50)
rank
をdplyr
から使用できます。
library(dplyr)
top_fifty <- Forbes2000 %>%
filter(rank(desc(profits))<=50)
これはデータを降順でソートし、ランクが50以下(つまり上位50)の値のみを保持します。
Dplyrは非常に便利です。コマンドと連鎖構文は非常に理解しやすいです。 10/10がおすすめです。
'filter(...)'の代わりに 'top_n(n = 50、wt = profit)'を使うこともできます – andrasz
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つで、フィードバックが高く評価されています。
私はplyrを愛しています。 – bstockton