如何使用R对比多个表格并生成变量匹配情况的Yes/No汇总表
R语言多表格变量匹配汇总表实现方案
实现逻辑
你的输入是「表格名-变量名」的成对长表数据,只需要做一次长表转宽表的变形,对匹配到的位置标记Yes、未匹配到的缺失位置填充No即可,无需复杂循环处理。
操作步骤
- 第一步:读取你的两列输入数据为R数据框,示例结构如下:
# 此处替换为你自己的数据源读取代码,比如read.csv/read.xlsx等 input_df <- data.frame( table_name = c("表1", "表1", "表2", "表3", "表3"), var_name = c("年龄", "性别", "年龄", "收入", "性别") )
- 第二步:使用tidyverse套件快速生成目标汇总表
library(tidyverse) match_summary <- input_df %>% # 给所有存在的匹配项预先标记Yes mutate(exist = "Yes") %>% # 长表转宽表:行是变量,列是表格名 pivot_wider( id_cols = var_name, names_from = table_name, values_from = exist ) %>% # 所有未匹配到的缺失值替换为No replace(is.na(.), "No")
- 第三步(可选):导出汇总表到本地Excel
library(openxlsx) write.xlsx(match_summary, "变量匹配汇总结果.xlsx", rowNames = FALSE)
基础R实现(无需安装第三方包)
如果不想加载tidyverse,用基础R的交叉表函数也可以实现:
# 生成变量和表格的交叉计数表 cross_count <- table(input_df$var_name, input_df$table_name) # 计数大于0标记Yes,否则为No match_summary <- as.data.frame.matrix(ifelse(cross_count > 0, "Yes", "No"))
内容的提问来源于stack exchange,提问作者AFS
相关产品推荐
相关产品推荐

