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

如何在结果数据框的多行中批量执行pairwiseCI检验

批量计算多类别性别成功比例差异的置信区间

我想用pairwiseCI包计算不同类别下男女成功比例差异的置信区间,现有数据框结构如下:

CategoryMale_SuccessFemale_SuccessMale_UnSuccessfulFemale_UnSuccessful
A1001509060
B70403080
C20305050

目前已经能单独计算类别A的结果,但希望批量处理所有3个类别,将estimate、lower、upper结果合并到原数据框中。


解决方案

可以借助dplyr的行处理功能,逐行对每个类别执行置信区间计算,最终合并结果:

# 构造原始数据框
df <- data.frame(
  Category = c("A", "B", "C"),
  Male_Success = c(100, 70, 20),
  Female_Success = c(150, 40, 30),
  Male_UnSuccessful = c(90, 30, 50),
  Female_UnSuccessful = c(60, 80, 50)
)

library(pairwiseCI)
library(dplyr)

# 批量计算并合并结果
result_df <- df %>%
  rowwise() %>%
  mutate(
    # 构造当前类别的成功、失败向量与分组标识
    success_vec = list(c(Male_Success, Female_Success)),
    failure_vec = list(c(Male_UnSuccessful, Female_UnSuccessful)),
    group_vec = list(c(2, 1)),
    # 调用pairwiseCI计算置信区间
    ci_output = list(pairwiseCI(cbind(success_vec, failure_vec) ~ group_vec, 
                               method = "Prop.diff", CImethod = "CC")),
    # 提取需要的结果字段
    estimate = ci_output$estimate,
    lower = ci_output$lower,
    upper = ci_output$upper
  ) %>%
  # 清理临时辅助列
  select(-success_vec, -failure_vec, -group_vec, -ci_output)

# 查看最终合并后的结果
print(result_df)

运行结果示例

# A tibble: 3 × 7
# Rowwise: 
  Category Male_Success Female_Success Male_UnSuccessful Female_UnSuccessful estimate  lower upper
  <chr>           <dbl>          <dbl>             <dbl>               <dbl>    <dbl>  <dbl> <dbl>
1 A                 100            150                90                  60   -0.188 -0.287 -0.0893
2 B                  70             40                30                  80    0.310  0.179  0.441
3 C                  20             30                50                  50   -0.103 -0.268  0.0619

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:05:15