9

データセット内の特定の変数の最大 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.

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

4

5 に答える 5

15

これで済むはず…

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

data <- data[1:10,]

于 2015-08-11T10:52:19.387 に答える
12

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

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

または、別のオプション?top_n(@docendodiscimus によるコメント)は、「スコア」の上位 n (つまり 10) エントリを使用して選択dplyrするラッパーです。filtermin_rank

 top_n(df1, 10, Score)    

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

 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]]
于 2015-08-11T10:53:09.480 に答える
2

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

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
于 2015-08-11T11:11:43.013 に答える
1

使用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
于 2015-08-11T16:00:19.680 に答える