web-dev-qa-db-ja.com

Rの変数の最大値10個を示す表を作成しますか?

データセット内の特定の変数の最大10個の値と、各観測値の他の4個の変数を表示する単純なテーブルを作成したいので、基本的にはデータの小さなサブセットです。次のようになります。

Score  District  Age  Group  Gender
17     B         23    Red   1
12     A         61    Red   0
11.7   A         18    Blue  0
10     B         18    Red   0
.
.
etc.

これにより、データはスコア変数で順序付けられます。すべてのデータは同じデータフレーム内に含まれています。

7
nikUoM

これはそれを行う必要があります...

data <- data[with(data,order(-Score)),]

data <- data[1:10,]

11
Gaurav

これは、arrangeからdplyrを使用して行うことができます。これは、グループ化変数がある場合にも機能するはずです。 arrangeの前に_group_by_を追加するだけです。 sliceを使用して最初の10個の観測値をフィルタリングします。

_ library(dplyr)
 df1 %>%
    arrange(desc(Score)) %>%
    slice(1:10) 
_

または、別のオプションはdplyrからの_?top_n_(@ docendodiscimusによるコメント)です。これは、filterと_min_rank_を使用して上位n(つまり10)のエントリを選択するラッパーです。 「スコア」の場合。

_ top_n(df1, 10, Score)    
_

または、rank(ties.method='first')と同等の_row_number_で論理条件を作成してfilterを使用します(@Steven Beaupreによる寄稿)

_ filter(df1, row_number(desc(Score)) <= 10)
_

またはdata.tableオプション(@David Arenburgによる)。 'data.frame'を 'data.table'(setDT(df1))、order(減少) 'Score'変数に変換し、最初の10個の観測値を選択します。 _.SD_は_Subset of DataTable_を意味します。

_ library(data.table)
 setDT(df1)[order(-Score), .SD[1:10]]
_
10
akrun

以下のコードを使用して、ベクトルの最大値を取得できます。

my_vec <- c(1:100)
tail(sort(my_vec),10)

したがって、このメソッドをデータフレームフィルターとして使用する場合は、次のようにすることができます。

data(mtcars)
mtcars[mtcars$mpg %in% tail(sort(mtcars$mpg),4),]

これは以下を生成します:

> mtcars[mtcars$mpg %in% tail(sort(mtcars$mpg),4),]
                mpg cyl disp  hp drat    wt  qsec vs am gear carb
Fiat 128       32.4   4 78.7  66 4.08 2.200 19.47  1  1    4    1
Honda Civic    30.4   4 75.7  52 4.93 1.615 18.52  1  1    4    2
Toyota Corolla 33.9   4 71.1  65 4.22 1.835 19.90  1  1    4    1
Lotus Europa   30.4   4 95.1 113 3.77 1.513 16.90  1  1    5    2
2
Konrad

sqldfの使用:

library(sqldf)
sqldf("SELECT * FROM mtcars 
      ORDER BY mpg DESC 
      LIMIT 10", row.names = TRUE)

出力:

               mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
Honda Civic    30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
Merc 240D      24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Datsun 710     22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Merc 230       22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Toyota Corona  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
0
mpalanco