トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン 印刷

slice_max

auditR

毎月の取引から上位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       
  <dbl> <chr> <date>    
1     1 1     2022-09-03 
2     2 1     2022-09-03
3     3 1     2022-09-01
4     4 1     2022-09-03

Last updated 2022-09-20 | auditR (c) N.Nawata