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

R语言如何使用purrr包逐行批量运行prop.test检验

R语言基于purrr实现逐行两两比例检验方案

核心思路

  • 从宽表列名中自动提取所有地区名称,生成无重复的两两地区配对组合,避免重复检验相同配对
  • 借助purrr的映射函数逐行遍历原始数据框,对每行的所有配对依次执行prop.test
  • 提取检验p值、组间比例等核心结果,整理为结构化的长表方便后续分析

完整代码

首先加载依赖包,示例数据可直接复用提供的df1:

library(tidyverse)

# 示例数据
df1 <- data.frame(
  id_val = c('row1', 'row2', 'row3'),
  value_florida = c(10, 27, 16),
  value_illinois = c(17, 14, 22),
  value_vermont = c(11, 4, 29),
  base_florida = c(12, 44, 32),
  base_illinois = c(18, 29, 23),
  base_vermont = c(15, 8, 33)
)

# 1. 提取所有地区名称,生成不重复的两两配对
regions <- str_subset(colnames(df1), "^value_") |> 
  str_remove("^value_")
region_pairs <- combn(regions, 2, simplify = FALSE)

# 2. 定义单行数据的检验函数:输入单行数据、配对列表,返回该行所有配对的检验结果
calc_single_row <- function(row_data, pairs) {
  map_dfr(pairs, function(pair) {
    # 提取两个地区的成功数(value)和样本量(base)
    x1 <- row_data[[paste0("value_", pair[1])]]
    n1 <- row_data[[paste0("base_", pair[1])]]
    x2 <- row_data[[paste0("value_", pair[2])]]
    n2 <- row_data[[paste0("base_", pair[2])]]
    
    # 执行比例检验
    test_res <- prop.test(x = c(x1, x2), n = c(n1, n2))
    
    # 整理结果输出
    tibble(
      region_a = pair[1],
      region_b = pair[2],
      prop_a = x1 / n1,
      prop_b = x2 / n2,
      diff_prop = (x1/n1) - (x2/n2),
      p_value = test_res$p.value
    )
  })
}

# 3. 逐行遍历原数据,拼接所有检验结果
final_result <- df1 |> 
  pmap_dfr(function(...) {
    current_row <- tibble(...)
    bind_cols(
      id_val = current_row$id_val,
      calc_single_row(current_row, region_pairs)
    )
  })

使用说明

  • 运行后final_result为结构化长表,每一行对应一个原始行id下的一组配对检验结果,和手动计算的第一行佛罗里达-伊利诺伊配对p值完全一致,可直接验证
  • 若需要关闭prop.test默认的连续性校正,只需在prop.test()参数中添加correct = FALSE即可
  • 若后续新增其他地区的value_xxx、base_xxx列,代码无需手动调整配对逻辑,会自动识别新地区生成配对
  • 如需添加显著性标记,可追加mutate()步骤自定义标记规则,例如:
final_result <- final_result |> 
  mutate(
    sig_label = case_when(
      p_value < 0.001 ~ "***",
      p_value < 0.01 ~ "**",
      p_value < 0.05 ~ "*",
      TRUE ~ "ns"
    )
  )

内容的提问来源于stack exchange,提问作者Natasha R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:54:21