制作一个表格,显示R中变量的10个最大值?

nik*_*UoM 6 r subset tabular r-table

我想创建一个简单的表,展示我的数据集中给定变量的最大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.
Run Code Online (Sandbox Code Playgroud)

从而在Score var上对数据进行排序.所有数据都包含在同一数据帧中.

akr*_*run 9

你可以使用arrangefrom 来做到这一点dplyr.如果存在分组变量,这也应该有效.只需添加group_by之前arrange.我们使用过滤前10个观测值slice.

 library(dplyr)
 df1 %>%
    arrange(desc(Score)) %>%
    slice(1:10) 
Run Code Online (Sandbox Code Playgroud)

或者另一种选择?top_n(由@docendodiscimus评论),dplyr其中包含使用filtermin_rank选择"得分"的前n个(即10个)条目.

 top_n(df1, 10, Score)    
Run Code Online (Sandbox Code Playgroud)

或者我们filter通过创建一个row_number等价的逻辑条件来使用rank(ties.method='first')(由@Steven Beaupre提供)

 filter(df1, row_number(desc(Score)) <= 10)
Run Code Online (Sandbox Code Playgroud)

或者是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]]
Run Code Online (Sandbox Code Playgroud)

  • 或者`top_n(df1,10,Score)` (3认同)

Gau*_*rav 8

这应该做到......

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

data <- data[1:10,]

  • 也许你可以将它包装成`head(data [order(-data $ Score),],10)` (2认同)