トップ 一覧 検索 ヘルプ RSS ログイン 印刷

slice_maxの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!毎月の取引から上位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