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

R语言合并不同长度数据表:按国家年份匹配添加税率列

R语言双表匹配合并实现方案

方法1:基础R原生merge函数(无需安装第三方包)

直接调用R内置函数即可完成匹配,代码示例:

# 仅保留两个表都匹配成功的记录(内连接)
t1_merged <- merge(x = t1, y = t2, by = c("Country", "Year"))

# 保留t1的全部记录,匹配不到税率的行对应税率列填充NA(左连接)
t1_merged <- merge(x = t1, y = t2, by = c("Country", "Year"), all.x = TRUE)

参数说明:

  • x/y:指定要合并的两个表,左表为要添加税率字段的公司数据表t1,右表为税率表t2
  • by:指定两个表用于匹配的共同字段,这里为国家和年份两个字段,需用向量传入
  • all.x = TRUE:设置为左连接,保留左表所有行,无匹配的字段填充NA

方法2:dplyr包连接函数(语法更简洁,处理大数据效率更高)

适合使用tidyverse生态的场景,需要先加载dplyr包:

# 加载依赖包
library(dplyr)

# 内连接:仅保留两个表都匹配成功的记录
t1_joined <- t1 %>% 
  inner_join(t2, by = c("Country", "Year"))

# 左连接:保留t1全部记录,匹配不到的税率列填充NA
t1_joined <- t1 %>% 
  left_join(t2, by = c("Country", "Year"))

如果两个表的匹配字段名称不一致,可以通过by参数指定对应关系,比如t1中国家字段名为Country,t2中国家字段名为Nation,则写为by = c("Country" = "Nation", "Year" = "Year")

注意事项

  • 匹配前需确保两个表的匹配字段格式统一:比如年份不要一个为字符型一个为数值型,国家名称的大小写、全称/缩写规则要完全一致,否则会出现匹配失败的情况
  • 如果税率表t2存在同一国家同一年份多条重复记录,合并后会导致t1的对应行重复,匹配前可先对t2去重:t2_unique <- distinct(t2, Country, Year, .keep_all = TRUE)
  • 合并后可以用nrow(t1_merged)和nrow(t1)对比行数,判断是否出现异常的行扩增

内容的提问来源于stack exchange,提问作者Noob in r

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:15:08