他の 2 つの列でグループ化されたときに、1 つの列の要約推定値 (平均、中央値、カウントなど) を取得したい大規模なデータセットがあります。
を使用してこれを行う方法を真剣に考えようとしていますpurrr
- うまくいけば、このワークフローが将来のプロジェクトでクリックできるようになります...しかし、非常に行き詰まっています。
再現可能な例として、これは および によるグループ化、am
およびvs
の要約値の推定に機能します。mpg
library(tidyverse)
library(rlang)
mtcars %>%
group_by(am, vs) %>%
summarise(mean_mpg = mean(mpg),
median_mpg = median(mpg),
count = n())
am
ただし、この例を拡張するために、 and vs
;をグループ化したいとします。そして; am
_ gear
そして。am
_ carb
直観的には、これは処理する必要があるようですmap
。
group_vars <- c("vs", "gear", "carb")
group_syms <- rlang::syms(group_vars)
sym_am <- rlang::sym("am")
mtcars %>%
map_df(~group_by(!!sym_am, !!!group_syms) %>%
summarise(mean_mpg = mean(mpg),
summarise(median_mpg = median(mpg),
summarise(count = n())
)
#Error in !sym_am : invalid argument type