您可以使用arrangefrom执行此操作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]]