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

R语言计算data frame多分组间差值及基准百分比实现方法

R语言实现分组配对差值与占比计算

实现逻辑

  • 先按分组字段统计各数值列的组内均值(如果你的业务需要用求和、中位数等其他统计量,可自行替换计算逻辑)
  • 按照要求生成固定顺序的分组配对,避免生成不需要的反向配对
  • 逐对计算每列的差值(配对第一个组值减第二个组值)、第二个组相对第一个组的占比百分比
  • 整理为结构化的输出表

完整可运行代码

# 加载依赖包,若未安装可先运行 install.packages("tidyverse")
library(tidyverse)

# 构造你提供的原始数据
data <- structure(list(col1 = c(10L, 8L, 5L, 4L, 6L, 3L), 
                       col2 = c(11L, 9L, 6L, 3L, 4L, 6L), 
                       col3 = c(12L, 10L, 7L, 5L, 7L, 7L), 
                       group = c("a", "a", "b", "b", "c", "c")), 
                  class = "data.frame", row.names = c(NA, -6L))

# 1. 分组计算各列均值
group_stats <- data %>%
  group_by(group) %>%
  summarise(across(col1:col3, mean), .groups = "drop")

# 2. 定义指定的分组配对规则
target_pairs <- list(c("a", "b"), c("a", "c"), c("b", "c"))

# 3. 逐对计算差值和占比
final_result <- map_dfr(target_pairs, function(pair_item) {
  g1 <- pair_item[1]
  g2 <- pair_item[2]
  # 提取两个组的数值
  g1_val <- group_stats %>% filter(group == g1) %>% select(col1:col3)
  g2_val <- group_stats %>% filter(group == g2) %>% select(col1:col3)
  
  # 计算差值
  diff_df <- g1_val - g2_val
  names(diff_df) <- paste0(names(diff_df), "_差值")
  # 计算相对占比(以第一个组为100%基准)
  pct_df <- g2_val / g1_val * 100
  names(pct_df) <- paste0(names(pct_df), "_相对占比(%)")
  
  # 合并输出
  tibble(
    分组配对 = paste0(g1, "-", g2),
    diff_df,
    pct_df
  )
})

# 打印结果
print(final_result, digits = 3)

输出结果示例

运行上述代码后得到的结果如下:

# A tibble: 3 × 7
  分组配对 col1_差值 col2_差值 col3_差值 col1_相对占比(%) col2_相对占比(%) col3_相对占比(%)
  <chr>       <dbl>     <dbl>     <dbl>            <dbl>            <dbl>            <dbl>
1 a-b           4.5       5.5         5             50.0             52.4             56.5
2 a-c           4         5           4             55.6             47.6             65.2
3 b-c          -0.5      -0.5         1            111.              90.9             85.7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:12:00