R语言如何逐行对汇总数据批量运行poisson.exact检验
逐行运行Poisson精确检验输出完整结果方案
你之前的代码只能输出单个率值,核心问题是map2_dbl仅支持返回长度为1的数值型向量,无法保留检验返回的多列结果。用列表列存储逐行检验的完整输出,再批量展开即可得到和单行运行完全一致的所有字段。
- 前置依赖:运行前确保已加载所需包,其中
poisson.exact来自exactci包,若使用R基础包自带的poisson.test逻辑完全通用
library(tibble) library(dplyr) library(tidyr) library(broom) # 若使用poisson.exact则加载,用基础poisson.test可跳过 library(exactci)
- 完整实现代码
# 测试数据集(替换为你从csv读入的数据即可) results <- tribble( ~group, ~a, ~b, ~c, ~d, 1, 302, 70137, 180541.2398, 3158205.224, 2, 3673, 66766, 1298973.019, 2039773.445, 3, 16142, 54297, 958777.9383, 2379968.526, 4, 50322, 20117, 900454.267, 2438292.197 ) final_result <- results %>% mutate( # 按行传入a、b、c、d四个参数,将整理后的检验结果存入列表列 test_output = pmap( list(a, b, c, d), ~ tidy(poisson.exact(c(..1, ..2), c(..3, ..4))) # 用基础包poisson.test就替换为下面这行 # ~ tidy(poisson.test(c(..1, ..2), c(..3, ..4))) ) ) %>% # 展开列表列,自动拼接所有检验结果字段 unnest(test_output)
- 结果说明
运行后输出的数据集会保留原表所有列(group、a、b、c、d),同时追加检验返回的全部字段:包括两组率的估计值、率比、p值、置信区间上下限、检验方法、备择假设等,和你单行运行do函数得到的输出字段完全一致。如果需要调整检验参数(比如置信度、单侧/双侧检验),直接在poisson.exact/poisson.test调用中传入对应参数即可。
内容的提问来源于stack exchange,提问作者SAN
相关产品推荐
相关产品推荐

