【发布时间】:2019-08-28 09:33:54
【问题描述】:
这个论坛上有很多关于它的问题,但我做不到。我得到了一个带有一堆分类变量(类因子)的数据框。我有一个目标列(1 或 0)。我想计算分类变量的每个级别内 1 的频率。我想一次性完成这 3 个 group_by 计算。
library(dplyr)
# Build the toy dataset
target = sample(x = c(0,1),size = 100,replace = T)
cat1 = sample(x = c("a","b","c"),size = 100,replace = T)
cat2 = sample(x = c("x","y","z"),size = 100,replace = T)
cat3 = sample(x = c("T","U","V"),size = 100,replace = T)
df = data.frame(target,cat1,cat2,cat3)
# How to do those 3 group_by computations in once knowing that in reality I got thousands of those categorical columns?
df %>%
group_by(cat1) %>%
summarise(statistics = mean(target))
df %>%
group_by(cat2) %>%
summarise(statistics = mean(target))
df %>%
group_by(cat3) %>%
summarise(statistics = mean(target))
【问题讨论】:
-
group_by(starts_with("cat"))? -
试试
tidyr::gather(df, k,val, -target) %>% group_by(k,val) %>% summarise(stats=mean(target)) -
@A. Suliman,哇,谢谢你。效果很好!
-
@Jaap 这行得通吗?我认为
group_by不支持vars参数。 -
@RonakShah 我希望它能够工作,但显然不是。您可能会使用来自
rlang的!!!之类的东西。