今天给大家分享一份 2000~2016 年海关数据 HS 编码(税号编码)统一对照表及统一结果。由 RStata 数据中心处理得到(基于世界海关组织公布的 HS 转换对照表,将 2000–2016 年中国海关数据的商品编码统一到 HS1996 / HS2002 / HS2007 / HS2012 / HS2017 五个版本)。
做跨年份的海关数据分析时,最常遇到的问题就是「同一个商品在不同年份对应着不同的编码」。本数据正是为了解决这个问题而构建的:它在保留原始 8 位商品编码的同时,额外给出了同一商品在五个 HS 版本下的统一编码,方便大家直接做跨期可比的商品级分析。
数据来源与处理方法
原始数据为 2000–2016 年中国海关数据(版本 2):
2000~2016 年海关数据(版本2):https://rstata.duanshu.com/#/course/530c467967104ffe9aeb2c6cfabf9fa1
每年一个分年 .dta。海关数据中的商品编码(税号编码)即我们常说的 HS 编码(Harmonized System,商品名称及编码协调制度),有两个特点:
- 前 6 位是国际通用码,全球统一;后 2 位是国内子目,由我国海关自行扩展,因此商品编码通常为 8 位;
- HS 编码每隔约 5 年修订一次,不同年份使用的是不同版本的 HS 编码。
在我们的数据中,年份与 HS 版本的对应关系如下:
| 年份区间 | 源 HS 版本 |
|---|---|
| 2000–2001 | HS1996 |
| 2002–2006 | HS2002 |
| 2007–2011 | HS2007 |
| 2012–2016 | HS2012 |
如果直接把跨年份的数据拼在一起做面板分析,同一个商品在不同年份会对应不同的编码,从而导致匹配错误。因此在做跨期分析之前,必须先把所有年份的编码统一到同一个版本。
统一过程依赖联合国统计司(UN Stats)公布的官方 Correlation Table(完整对照表,覆盖 1:1 / 1:n / n:1 / n:n 全部对应关系,比 Conversion Table 覆盖度更高)。所有转换表方向均为「新版本 → 旧版本」,我们同时按正向(旧→新)和反向(新→旧)读取,一对多时取第一个匹配,再把相邻版本的对照关系链式拼接起来,为每个源版本构建一张包含全部 5 个目标版本的查找表;链条中某一步缺失时级联填充(沿用上一版本的码),保证链条不中断。最后执行编码转换:商品编码前 6 位参与版本转换、后 2 位(国内子目)保留不变,查不到对应关系的则保留原码。
该数据的详细计算方法在以下三个课程中均有讲解(Python、R 语言、Stata 三个版本):
- 使用 Stata 统一海关税号编码:https://rstata.duanshu.com/#/brief/course/f0764ea977cc487d8bb1699133eecb39
- 使用 Python 统一海关税号编码:https://rstata.duanshu.com/#/brief/course/aae08b44662b44b284369804399ae4e9
- 使用 R 语言统一海关税号编码:https://rstata.duanshu.com/#/brief/course/2e507312daad4d04995456b00a3e7743
感兴趣的小伙伴可以结合讲义材料学习。附件中也提供了完整的计算代码。
数据概览
为了方便大家使用,我把统一结果按年份汇总成了 2000–2016 年、共 17 个分年的面板数据(每年一个 .dta 文件),每条观测为一条海关记录,包含以下变量:
| 变量 | 含义 |
|---|---|
newhgid |
观测 ID |
年份 |
2000–2016 |
商品编码 |
原始 8 位 HS 编码(前 6 位国际码 + 后 2 位国内子目) |
HS1996 |
统一到 HS1996 版本的 8 位编码 |
HS2002 |
统一到 HS2002 版本的 8 位编码 |
HS2007 |
统一到 HS2007 版本的 8 位编码 |
HS2012 |
统一到 HS2012 版本的 8 位编码 |
HS2017 |
统一到 HS2017 版本的 8 位编码 |
![]()
这份数据的核心价值在于:把不同年份、不同 HS 版本的海关商品编码映射到了统一的口径下。因此它可以用于:
- 将跨年份的海关贸易记录按「同一商品」横向拼接,构建商品层面的跨期面板数据;
- 在不同年份之间比较贸易结构、计算产品层面的进出口指标时,避免因 HS 版本变动导致的伪变化;
- 在按商品编码与工企、上市公司、专利、工商注册等数据库做匹配时,统一编码口径、提升匹配质量。
需要提醒的是,并非所有编码都能被成功统一:若某个 6 位码不是目标版本中的合法 HS 编码(例如我国海关特有的 98/99 章特殊码、或数据录入错误),会保留其原码。具体各年各版本的无法统一比例见下方图表。
图表展示
下图展示了 2000–2016 年各版本 HS 编码无法统一的观测值比例(数值为占当年观测总数的百分比):
![]()
处理代码
下面给出方法的核心代码片段。完整可运行代码见附件。
首先是年份与 HS 版本的对应关系,以及正向(旧→新)读取 Correlation Table 的逻辑(R 语言):
# 年份与 HS 版本对应关系(2000–2016) |
编码转换的核心逻辑——商品编码前 6 位查表转换、后 2 位保留,缺失则保留原码(R 语言):
# 商品编码为 8 位:前 6 位参与版本转换,后 2 位(国内子目)保留不变 |
数据准备阶段,先用 Stata 把每年的大数据瘦身为 newhgid + 年份 + 商品编码 三个变量:
*- 将每年大数据瘦身为 newhgid + 年份 + 商品编码 |
附件中也提供了该数据的处理代码供参考:
![]()
数据引用格式
由于该数据包含较多 RStata 处理的内容,在研究中使用该数据请使用清晰的方式注明数据来源于 RStata 或者 RStata 数据中心,并使用如下格式引用:
RStata 数据中心: 2000~2016年海关数据 HS 编码(税号编码)统一对照表及统一结果. 2026. https://tidyfriday.cn/rsdb2/
英文文献可以使用下面的格式引用:
RStata Data Center: Unified HS Code (Tariff Code) Crosswalk Table and Unified Results for Customs Data, 2000–2016. 2026. https://tidyfriday.cn/rsdb2/
关联课程/数据推荐
2000~2016 年海关数据(版本2):https://rstata.duanshu.com/#/course/530c467967104ffe9aeb2c6cfabf9fa1
2000~2016 年海关地理信息数据(含经纬度及其所处的省市区县):https://rstata.duanshu.com/#/course/a63b7b4100f541f484fc79dfe1acd6f9
2000~2016 年海关与专利数据匹配结果:https://rstata.duanshu.com/#/course/ca8a4035a91c426393fd2a706e85cbdb
2000~2016 年上市公司与海关数据库匹配结果:https://rstata.duanshu.com/#/course/42d505c537b74054aa0b268153a21bfa
2000~2016 年海关数据与工商注册信息匹配结果(版本2):https://rstata.duanshu.com/#/course/fe61acdee53d4000bb4b80ec0afbfff4
点击这里跳转到 RStata 短书平台获取附件:2000~2016年海关数据 HS 编码(税号编码)统一对照表及统一结果
评论