他の 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