您可以使用arrange
from执行此操作dplyr
。如果有分组变量,这也应该起作用。只需group_by
在arrange
. 我们使用 过滤前 10 个观察值slice
。
library(dplyr)
df1 %>%
arrange(desc(Score)) %>%
slice(1:10)
或者另一个选项是?top_n
(由@docendodiscimus 评论),dplyr
它是一个包装器,它使用filter
并min_rank
选择前n 个(即10 个)条目作为'Score'。
top_n(df1, 10, Score)
或者我们filter
通过创建一个row_number
相当于rank(ties.method='first')
(由@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]]