R语言如何批量统计多变量所有为1的回答组合的频次分布
解决方法
你可以直接通过对目标变量列批量调用计数函数实现全组合统计,无需手动遍历组合,以下是基于tidyverse的实现方案:
1. 统计所有实际出现的组合的频数
直接使用dplyr::count()结合across()指定目标列即可一次性输出所有出现过的Var1~Var6组合和对应受试者人数:
library(tidyverse) # 构造数据集的代码你已有,这里直接统计 freq_df <- DF %>% # 指定统计Var1到Var6的组合,name参数指定计数结果的列名 count(across(Var1:Var6), name = "受试者人数") freq_df
用你提供的测试数据运行后,输出结果如下:
Var1 Var2 Var3 Var4 Var5 Var6 受试者人数 1 0 0 0 1 0 0 1 2 0 0 1 0 0 0 1 3 1 1 1 1 0 1 1 4 1 1 1 1 1 1 2
2. 补全所有理论可能的组合(含无人匹配的组合)
如果需要覆盖2^6=64种所有可能的0/1组合,没有人对应的组合人数显示为0,可以用complete()补全结果:
full_freq_df <- freq_df %>% complete(!!!rlang::syms(paste0("Var", 1:6)), fill = list(受试者人数 = 0)) full_freq_df
3. 快速筛选特定变量为1的组合
如果后续需要单独提取某几个变量全为1的组合,直接加过滤条件即可:
# 示例:筛选Var1、Var3同时为1的所有组合频数 filter(freq_df, Var1 == 1, Var3 == 1)
内容的提问来源于stack exchange,提问作者Sascha
相关产品推荐
相关产品推荐

