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

R语言中无重复获取所有可能组合及学生水果食用统计方法

学生水果食用情况数据集片段

R语言实现水果食用分组统计与无重复组合生成

以下操作默认你的数据集对象名为stu_fruit,其中包含apple、banana、orange三列,取值为1(对应食用)/0(对应不食用),每行对应1个学生样本。

各食用场景人数统计

基础R实现(无需安装额外包)

直接通过逻辑向量求和统计符合条件的样本量即可:

# 仅食用苹果
n_apple_only <- sum(stu_fruit$apple == 1 & stu_fruit$banana == 0 & stu_fruit$orange == 0)
# 仅食用香蕉
n_banana_only <- sum(stu_fruit$apple == 0 & stu_fruit$banana == 1 & stu_fruit$orange == 0)
# 仅食用橙子
n_orange_only <- sum(stu_fruit$apple == 0 & stu_fruit$banana == 0 & stu_fruit$orange == 1)
# 食用全部三种水果
n_all <- sum(stu_fruit$apple == 1 & stu_fruit$banana == 1 & stu_fruit$orange == 1)
# 仅食用苹果+香蕉(不含同时吃橙子的样本,若要包含则去掉& orange == 0条件)
n_apple_banana <- sum(stu_fruit$apple == 1 & stu_fruit$banana == 1 & stu_fruit$orange == 0)
# 仅食用苹果+橙子
n_apple_orange <- sum(stu_fruit$apple == 1 & stu_fruit$banana == 0 & stu_fruit$orange == 1)
# 仅食用香蕉+橙子
n_banana_orange <- sum(stu_fruit$apple == 0 & stu_fruit$banana == 1 & stu_fruit$orange == 1)

如果需要一次性输出所有分组(含三种都不吃的样本)的统计结果,可以先给每行打组合标签再计数:

stu_fruit$combo <- with(stu_fruit, ifelse(apple==1&banana==0&orange==0,"仅苹果",
                                 ifelse(apple==0&banana==1&orange==0,"仅香蕉",
                                 ifelse(apple==0&banana==0&orange==1,"仅橙子",
                                 ifelse(apple==1&banana==1&orange==1,"三种全吃",
                                 ifelse(apple==1&banana==1&orange==0,"苹果+香蕉",
                                 ifelse(apple==1&banana==0&orange==1,"苹果+橙子",
                                 ifelse(apple==0&banana==1&orange==1,"香蕉+橙子","三种都不吃")))))))
table(stu_fruit$combo)

无重复获取所有可能的水果组合

直接用R内置的combn()函数即可生成无重复、无顺序差异的组合,不会出现“苹果+香蕉”和“香蕉+苹果”这类重复项:

# 定义水果类别集合
fruit_list <- c("苹果","香蕉","橙子")
# 生成所有长度从1到3的非空组合
all_combinations <- unlist(lapply(1:length(fruit_list), function(k) combn(fruit_list, k, simplify = F)), recursive = F)

如果需要把组合拼接成易读的字符串格式,可执行:

combo_labels <- sapply(all_combinations, paste, collapse = "+")

运行后combo_labels输出结果如下,和需要统计的分组完全匹配:

[1] "苹果"       "香蕉"       "橙子"       "苹果+香蕉"   "苹果+橙子"   "香蕉+橙子"   "苹果+香蕉+橙子"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:45:46