You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中按行统计3个及以上布尔变量的高频组合的方法

R实现多布尔变量高频组合统计方案

核心思路

对每一行取值为1的变量,生成所有长度≥3的子集,再全局汇总各子集的出现次数,取排序前3的结果即可。

完整实现代码

# 加载依赖包
library(tidyverse)

# 示例数据
df <- data.frame(ID   = c(1, 2, 3, 4, 5, 6, 7, 8),
                 var1 = c(0, 0, 1, 1, 1, 0, 0, 1),
                 var2 = c(1, 0, 0, 1, 1, 1, 1, 0),
                 var3 = c(0, 0, 1, 1, 1, 1, 0, 0),
                 var4 = c(1, 1, 1, 1, 1, 0, 1, 1),
                 var5 = c(0, 0, 0, 1, 1, 0, 1, 1)
)

# 提取布尔变量列(排除ID列)
bool_cols <- setdiff(colnames(df), "ID")

# 统计所有3变量组合的出现次数,取前3
result <- df %>%
  rowwise() %>%
  # 提取当前行取值为1的变量列表
  mutate(true_vars = list(bool_cols[c_across(all_of(bool_cols)) == 1])) %>%
  # 过滤掉1值变量不足3个的行,无有效组合
  filter(length(true_vars) >= 3) %>%
  # 生成所有3变量组合(需要统计更长组合见下方调整说明)
  mutate(combs = list(combn(true_vars, m = 3, FUN = paste, collapse = "/"))) %>%
  unnest(combs) %>%
  # 按出现次数降序排序
  count(combs, name = "occur_times", sort = TRUE) %>%
  # 取前3高频组合
  head(3)

运行结果

> print(result)
# A tibble: 3 × 2
  combs          occur_times
  <chr>                <int>
1 var1/var4/var5           3
2 var1/var2/var3           2
3 var1/var2/var4           2

调整说明

如果需要统计所有长度≥3的组合(包含4变量、5变量等更长组合),只需替换上述代码中生成combs的逻辑:

# 替换原来的mutate(combs = list(...)) 部分
mutate(combs = list(
  unlist(lapply(3:length(true_vars), function(m) {
    combn(true_vars, m = m, FUN = paste, collapse = "/")
  }))
))

适配14个变量的说明

14个布尔变量的最大3元组合数仅为choose(14,3)=364,计算量极小,该方案可以直接运行无性能压力。


内容的提问来源于stack exchange,提问作者cully_π

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:27:03