データの中から、最大・最小・最新・最古などを選択する。
それぞれ、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.さんに教わった。感謝感激。
Last updated 2022-10-07 | auditR (c) N.Nawata