如何用R语言通过循环或函数匹配两个数据集添加税率变量?
将宽格式税收数据匹配到长格式GDP数据集
直接用pandas的格式转换+合并就能高效解决,完全不需要写循环,适合大规模数据集处理:
步骤说明
- 把宽格式的Dataset2(年份为行、国家为列)转成和Dataset1一致的长格式(年份+国家为行、税率为值);
- 通过
Year和Country两个字段,将转换后的税收数据与Dataset1合并,自动填充对应税率。
代码实现
import pandas as pd # 构造示例数据集(替换成你实际的读取代码,比如pd.read_csv) dataset1 = pd.DataFrame({ 'Year': [2000, 2001, 2000, 2001], 'Country': ['Austria', 'Austria', 'Belgium', 'Belgium'] }) dataset2 = pd.DataFrame({ 'Year': [2000, 2001], 'Austria': [55, 51], 'Belgium': [48, 45] }) # 转换Dataset2为长格式 tax_long = dataset2.melt( id_vars='Year', # 保留Year作为识别列 var_name='Country', # 原列名转为Country字段 value_name='tax' # 税率值转为tax字段 ) # 合并数据集,自动匹配年份和国家对应的税率 result = pd.merge(dataset1, tax_long, on=['Year', 'Country'], how='left') print(result)
输出结果
Year Country tax 0 2000 Austria 55 1 2001 Austria 51 2 2000 Belgium 48 3 2001 Belgium 45
优势说明
- 完全基于pandas的矢量化操作,比手动写循环效率高几个数量级,处理大规模数据时不会卡顿;
- 自动过滤匹配不上的国家(如果Dataset1里有Dataset2没有的国家,对应tax会显示NaN,方便后续处理)。
内容的提问来源于stack exchange,提问作者wilbertosilva
相关产品推荐
相关产品推荐

