【发布时间】:2023-01-24 13:47:11
【问题描述】:
我有一个包含多个变量(在我的示例中为 23 个)的数据框,具有二进制是/否条件,我正在尝试识别变量对的组合
df <- tibble(V1 = sample(c(0,1), 25, replace=TRUE, prob=c(0.6, 0.4)),
V2 = sample(c(0,1), 25, replace=TRUE, prob=c(0.6, 0.4)),
V3 = sample(c(0,1), 25, replace=TRUE, prob=c(0.8, 0.2)),
V4 = sample(c(0,1), 25, replace=TRUE, prob=c(0.7, 0.3)),
V5 = sample(c(0,1), 25, replace=TRUE, prob=c(0.8, 0.2)),
V6 = sample(c(0,1), 25, replace=TRUE, prob=c(0.8, 0.2)),
V7 = sample(c(0,1), 25, replace=TRUE, prob=c(0.8, 0.2)))
如果我想识别数据框中的每个唯一组,我会像这样使用 cur_group_id() :
df %>% group_by(across(everything())) %>%
mutate(combo_id = cur_group_id())
但我真正想要的是确定组合对是的条件。例如,我想识别 V1 == 1 & V2 == 1 的情况,忽略任何其他列包含的内容。
所以基本上我想这样做:
df %>%
mutate(combo_id = case_when(V1 == 1 & V2 == 1 ~ "V1_V2"))
但我希望能够将其应用于数据框中所有变量的所有可能的 2 个变量组合。
也许这是 map() 的工作?我卡住了。
【问题讨论】: