データフレームから上位 'n' 社を取得しようとしています。以下に私のコードを示します。
data("Forbes2000", package = "HSAUR")
sort(Forbes2000$profits,decreasing=TRUE)
ここで、この並べ替えられたベクトルから上位 50 個の観測値を取得したいと考えています。
head
tail
本当に便利な機能です!
head(sort(Forbes2000$profits,decreasing=TRUE), n = 50)
data.frame の最初の 50 行が必要な場合は、arrange
関数 fromplyr
を使用して並べ替えてからdata.frame
使用できます。head
library(plyr)
head(arrange(Forbes2000,desc(profits)), n = 50)
profits
への呼び出しでラップしていることに注意してくださいdesc
。これは、降順でソートされることを意味します。
プライヤーなしで作業するには
head(Forbes2000[order(Forbes2000$profits, decreasing= T),], n = 50)
を使用order
して並べ替えdata.frame
、次にを使用head
して最初の50行のみを取得します。
data("Forbes2000", package = "HSAUR")
head(Forbes2000[order(Forbes2000$profits, decreasing=TRUE), ], 50)
Mnel は、一般的に、head() および tail() 関数を並べ替え関数と一緒に使用したいという点で正しいです。ただし、中程度のデータ セットの場合、Vince の方法の方が高速です。head() または tail() を使用しなかった場合は、基本的なサブセクション呼び出し演算子 [].... を使用できます。
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,]
ただし、通常の [] 演算子は、データが簡単に描画される配列または行列形式で構造化されていると想定しているため、head()、tail()、または filter() 関数を本当にお勧めします。(うまくいけば、これはテジャの質問に答えます)
どのパッケージを選択するかは、主に主観的なものです。しかし、人々のコメントを読むと、plyr の Arrange()、{bases} の order() を {utils} の head() と tails で使用するか、または plyr() を使用するかの選択は、メモリ サイズと行サイズに大きく依存すると言います。あなたのデータセット。Plyr と、場合によっては Dplyr が大規模で複雑なデータセットに問題を抱えていることについて、さらに詳しく説明することもできますが、本題から外れたくはありません。
PSこれは私の初めての回答の1つであるため、フィードバックをいただければ幸いです。