如何自动提取meta分析数据集中作者唯一的所有行组合?
需求描述
我正在开展一项meta分析,数据集中部分作者有多篇研究记录,这可能引入偏倚。需要自动提取所有每个作者仅出现一次的行组合(示例数据共有4种可行组合),避免手动操作,以便后续对提取出的数据集进行分析。
示例数据
sample <- data.frame(Author = c('a','a','b','b','c'), Year = c('2020','2016', '2020','2010','2005'), Value = c(3,1,2,4,5), UniqueName = c('a 2020', 'a 2016', 'b 2020', 'b 2010', 'c 2005'))
数据预览:
Author Year Value UniqueName 1 a 2020 3 a 2020 2 a 2016 1 a 2016 3 b 2020 2 b 2020 4 b 2010 4 b 2010 5 c 2005 5 c 2005
自动实现方案
使用tidyverse工具包可以高效完成这个需求,代码如下:
library(tidyverse) # 生成所有符合要求的作者行组合 author_combinations <- sample %>% # 按作者分组,将每个作者的所有行嵌套为列表 group_by(Author) %>% nest() %>% # 转换为命名列表:键为作者名,值为对应的数据行 deframe() %>% # 生成所有作者行的笛卡尔积(即每个作者选一行的所有组合) cross_df() %>% # 将每个组合中的单行数据框绑定为完整数据集 mutate(combined = pmap(., bind_rows)) %>% # 提取所有组合的数据集列表 pull(combined)
结果验证
运行代码后,author_combinations是一个列表,每个元素就是你需要的单个组合数据集:
- 查看第一个组合:
author_combinations[[1]] - 查看第二个组合:
author_combinations[[2]] - 以此类推,会自动生成所有可能的组合(示例中为4种),完全无需手动筛选。
内容的提问来源于stack exchange,提问作者SteveMcManaman
相关产品推荐
相关产品推荐

