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

max()の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
! データの中から、最大・最小・最新・最古などを選択する。

それぞれ、max()ないしmin()で対応ができるが、変数は配列を入れる必要がある。

したがって、データフレームからselect()で変数を選択してmax()に渡してもエラーになる。

 df %>% select(var) %>% max()  #これはエラーになる

そのため配列変換を間に含める。

  df %>% select(var) %>% matrix() %>% max()  #


:注意:

min()やmax()はベクトルを値にとって比較するので、データフレームの列を比較すると全体を一つのベクトルとして見てしまう。

行ごとに列の値を比較したければ、pmax() pmin()を用いる。
! レコードを抽出する

最大値等を拾い出すだけではなく、その値を持つレコードを拾いたいときは、filter()やsummarise()で条件式を含める。

 x = c("2020-01-02", "2020-02-23", "2020-03-23", "2020-01-10")
 y = c("hoge", "moge", "piyo", "poyo")
 df = data.frame(x = x, y = y)
 df %>% 
  mutate_at(vars(x), funs(as.Date)) %>% 
  summarise(ymdmax = max(x))

や、

 data.frame(x = c("2020-01-02", "2020-02-23", "2020-03-23", "2020-01-10"), stringsAsFactors = F) %>%  
   filter(x == max(x))


:参考:

r-wakalangの'''ill_identifiedさん'''や'''T.N.さん'''に教わった。感謝感激。