This is a convenient wrapper that uses `filter()`

and
`min_rank()`

to select the top or bottom entries in each group,
ordered by `wt`

.

`top_n(x, n, wt)`

x

a `tbl()`

to filter

n

number of rows to return. If `x`

is grouped, this is the
number of rows per group. Will include more than `n`

rows if
there are ties.

If `n`

is positive, selects the top `n`

rows. If negative,
selects the bottom `n`

rows.

# NOT RUN { df <- data.frame(x = c(10, 4, 1, 6, 3, 1, 1)) df %>% top_n(2) # Negative values select bottom from group. Note that we get more # than 2 values here because there's a tie: top_n() either takes # all rows with a value, or none. df %>% top_n(-2) if (require("Lahman")) { # Find 10 players with most games # A little nicer with %>% tbl_df(Batting) %>% group_by(playerID) %>% tally(G) %>% top_n(10) # Find year with most games for each player tbl_df(Batting) %>% group_by(playerID) %>% top_n(1, G) } # }