如何在结果数据框的多行中批量执行pairwiseCI检验
批量计算多类别性别成功比例差异的置信区间
我想用pairwiseCI包计算不同类别下男女成功比例差异的置信区间,现有数据框结构如下:
| Category | Male_Success | Female_Success | Male_UnSuccessful | Female_UnSuccessful |
|---|---|---|---|---|
| A | 100 | 150 | 90 | 60 |
| B | 70 | 40 | 30 | 80 |
| C | 20 | 30 | 50 | 50 |
目前已经能单独计算类别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
相关产品推荐
相关产品推荐

