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

R如何生成球员不同人数阵容组合并统计对应篮球球权数据?

R实现多球员组合球权数据统计方案

首先注意你之前代码中直接用数字作为变量名不符合R语法规范,后续使用请调整命名规则。以下是可直接实现需求的代码方案:

前置准备

先加载依赖包并对原始数据做预处理:

library(tidyverse)

# 预处理原始数据,新增每行上场球员集合列
df_pre <- df %>%
  rowwise() %>%
  mutate(players = list(c(P1, P2, P3, P4, P5))) %>%
  ungroup()

# 提取所有出现过的唯一球员编号
all_players <- unique(c(df$P1, df$P2, df$P3, df$P4, df$P5))

定义通用统计函数

该函数支持输入任意组合人数,直接返回对应组合的统计结果:

calc_comb_stats <- function(k) {
  # 生成所有k人不重复组合
  all_combs <- combn(all_players, k, simplify = FALSE)
  
  # 遍历每个组合计算对应指标总和
  map_dfr(all_combs, function(comb) {
    # 筛选包含当前组合所有球员的行
    target_rows <- df_pre %>%
      filter(map_lgl(players, ~all(comb %in% .x)))
    
    # 求和四个核心指标
    stats <- target_rows %>%
      summarise(
        O.Points = sum(O.Points),
        O.Poss = sum(O.Poss),
        D.Points = sum(D.Points),
        D.Poss = sum(D.Poss)
      )
    
    # 拼接组合编号列和统计结果
    comb_df <- as.data.frame(t(comb))
    colnames(comb_df) <- paste0("Num", 1:k)
    bind_cols(comb_df, stats)
  })
}

生成所需数据集

直接调用函数即可得到对应人数的组合统计结果:

# 2人组合统计结果
comb2 <- calc_comb_stats(2)
# 3人组合统计结果
comb3 <- calc_comb_stats(3)
# 4人组合统计结果
comb4 <- calc_comb_stats(4)
# 5人组合统计结果
comb5 <- calc_comb_stats(5)

如果需要过滤掉所有指标均为0的无效组合,可以在生成结果后追加以下过滤逻辑:

comb2_clean <- comb2 %>% filter(across(c(O.Points, O.Poss, D.Points, D.Poss), ~.x != 0))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:36:04