データセット内の特定の変数の最大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.
これにより、データはスコア変数で順序付けられます。すべてのデータは同じデータフレーム内に含まれています。
これはそれを行う必要があります...
data <- data[with(data,order(-Score)),]
data <- data[1:10,]
これは、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]]
_
以下のコードを使用して、ベクトルの最大値を取得できます。
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
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