あるデータをgroup_by()で分類したら、その分類された単位で一つのデータとして扱いたい。
そういうときは、nest()によってデータの階層を下げてやる。
gapminder::gapminder %>% group_by(continent, year) %>% #1 データをグループ別にポイントした(並べ替えただけ) nest() %>% #2 ネストにしてグループ単位のデータにする mutate(model = map(data, fun) ) #3 ↓参照
上記で、ネストしたデータはそれを一つのデータとして処理の対象にできる。ゆえにデータフレーム単位での処理ができる。
data はネストによって作られる単位であり、それを対象に関数funでマッピングして処理した結果を、modelという項目に入れている。
map()を使った演算は、返り値がlist型になるので不便。よって、map_dbl(data, fun)を使って、返り値をdouble型にする。
dataはネストされているとすれば、元に戻すには、unnest()を使う。
unnest(data)
によって、dataの階層の下のデータがバラバラに蘇る。