!毎月の取引から上位n件を拾い出す 一年分の取引DBがあり、その中から各月の上位n件を取り出すような場合、 取引DB |> group_by(month = floor_date(取引日, by=month)) |> slice_max( order_by = 取引金額 n = 3 #例えば ) |> ungroup !リストの中のグループから最新日付のものを取り出す df <- data.frame(id = c(1, 1, 1, 2, 2, 2, 3, 4, 4, 4), treat = c("1","0","1", "1", "0", "1", "1", "0","1", "1"), day = c("2022-09-01", "2022-09-02", "2022-09-03", "2022-09-01", "2022-09-02", "2022-09-03", "2022-09-01", "2022-09-01", "2022-09-02", "2022-09-03")) df |> mutate(day = lubridate::date(day)) |> group_by(id) |> slice_max(day) # A tibble: 4 × 3 # Groups: id [4] id treat day 1 1 1 2022-09-03 2 2 1 2022-09-03 3 3 1 2022-09-01 4 4 1 2022-09-03