注意:附件中的「统一HS编码」仅提供了 2000 年的数据,海关数据也由于过大也没有在附件中提供,全部年份的数据需要从下述链接购买复现。
今天给大家分享如何使用 Stata 基于逐条海关记录,筛选绿色进出口、统计各企业及各城市的进出口额与绿色进出口额,并计算绿色进出口占比(绿色进出口总额 ÷ 进出口总额 × 100%)的方法。数据基于「2000~2016 年海关数据(版本 2)」与平台分享的「2000~2016年海关数据 HS 编码(税号编码)统一对照表及统一结果」二次整理得到。
2000~2016 年海关数据(版本2):https://rstata.duanshu.com/#/brief/course/530c467967104ffe9aeb2c6cfabf9fa1
2000~2016年海关数据 HS 编码(税号编码)统一对照表及统一结果:https://rstata.duanshu.com/#/brief/course/e596b993c65646189696d21627e64fc8
处理流程概览:整个测算由 4 个 .do 文件串联完成,下表给出每一步对应的脚本与任务:
| 步骤 | 脚本 | 任务 |
|---|---|---|
| Step 1 | 生成绿色HS6位清单.do |
合并 table1.xlsx / table2.xlsx → 绿色HS6位清单.csv(155 个绿色 HS6 位码) |
| Step 2 | 绿色进出口测算_主程序.do |
逐年读入海关数据,merge 统一 HS2017、筛选绿色进出口,并按企业 / 城市分类汇总 |
| Step 3 | 合并多年数据.do |
将逐年结果纵向 append 为 *_全部年份.dta |
| Step 4 | 绘图_*.do |
生成总出口、绿色出口及占比趋势图 |
其中 table1.xlsx / table2.xlsx 来自之前的数据分享,是环境商品对应的海关 HS6 代码表:
使用 R 语言处理和提取绿色产品 HS6 代码:https://rstata.duanshu.com/#/brief/course/4dca1aac87394d52b235985351ed4fa9
数据来源说明:测算依赖五类数据——原始逐条海关记录、统一 HS 编码对照表、绿色 HS6 位清单、企业省市对照(全部海关企业所属省市.dta)、贸易方式大类(贸易方式大类.dta)、国别标准化(ISO3.dta)。其中企业省市对照的省市区县信息:2000~2011 年根据原始“经营单位所在市名称”汇总;2012~2016 年改用企业名称 + 工商注册信息匹配获取城市;省市区划代码使用 2021 版。
其中全部海关企业所属省市.dta、贸易方式大类.dta、ISO3.dta 三个数据来自之前分享的数据:
2000~2016 年各城市与各国家进出口额面板数据:https://rstata.duanshu.com/#/brief/course/0bf27cbbb2d841cdab4640fa7af59460
不过这个数据里面并没有这三个文件,因为它们只是整理过程中需要的中间文件,这里在附件中都提供了。
一、指标来源与计算原理
1.1 核心指标:进出口额、绿色进出口额与占比
![]()
| 指标 | 含义 |
|---|---|
| 进口额 | 进出口分类名称 == "进口" 时的金额 |
| 出口额 | 进出口分类名称 == "出口" 时的金额 |
| 进出口总额 | 进口额 + 出口额 |
| 绿色进口额 | 属于绿色产品且为进口的金额 |
| 绿色出口额 | 属于绿色产品且为出口的金额 |
| 绿色进出口总额 | 绿色进口额 + 绿色出口额 |
| 绿色进出口占比 | 绿色进出口总额 ÷ 进出口总额 × 100% |
| 绿色出口占比(可派生) | 绿色出口额 ÷ 出口额 × 100% |
1.2 绿色进出口的筛选原理
“是否属于绿色进出口”由 HS 编码 + 绿色清单 判定:
- 原始海关数据中每条记录通过 newhgid 在「统一 HS 编码」中对应到统一的 HS2017(8 位);
- 取 HS2017 前 6 位,与 绿色HS6位清单.csv(2017 版绿色 HS6 位码,共 155 个)匹配;
- 命中即记为绿色(green = 1),未命中为 green = 0。
注意:判定必须使用统一的
HS2017前 6 位,不能用原始商品编码(其 HS 版本随年变化),否则跨年不可比、漏判严重。
1.3 数据来源与口径
| 数据 | 角色 |
|---|---|
| 2000~2016 年海关数据(版本 2) | 原始逐条记录,仅用 7 个核心变量 |
统一HS编码/(逐年 .dta) |
通过 newhgid 取 HS2017 |
绿色HS6位清单.csv |
绿色判定字典(155 个 HS6 位码) |
贸易方式大类.dta |
贸易方式名称 → 标准大类 |
全部海关企业所属省市.dta |
经营单位名称 → 省 / 市 |
ISO3.dta |
起运国 / 目的国名称 → 标准名 / ISO3 |
二、数据准备工作
2.1 Step 1:生成绿色 HS6 位清单
关键命令说明:
- import excel …, firstrow:读取 Excel;ds + word 1 of r(varlist)’动态取首列,规避两张表首列变量名不一致(含空格)导致rename` 失败
- destring …, force:将可能是字符的数字转数值
- strofreal(raw, “%06.0f”):补齐前导零,统一为 6 位字符串
*- ── 0. 路径设置 ── |
去重与格式化规则说明:
- 两张表首列都取为 raw,缺失行先 drop;
- destring …, force 把字符型数字转为数值,避免后续匹配时报类型不一致;
- strofreal(raw, “%06.0f”) 补齐前导零,确保 hs6 严格 6 位(如 090111 而非 90111)。
2.2 Step 2a:准备三张辅助表(tempfile)
主程序逐年循环前,先把三张维度表读入内存并存为 tempfile,供后续 m:1 合并。
关键命令说明:
- duplicates drop 合并键:保证合并键唯一,避免 m:1 合并时一对多导致记录膨胀
- gen byte green = 1:在绿色清单上打命中标记
*- ── 读取绿色HS6位清单 ── |
三、主程序逐年测算
以下代码对应 绿色进出口测算_主程序.do,在 foreach y of global years 循环内逐年执行。
3.1 逐年读入核心变量并防溢出
foreach y of global years { |
说明:只 keepusing 7 个核心变量,是应对“各年海关数据变量数量 / 类型不完全一致”的关键;recast double 金额 保证后续 collapse (sum) 不溢出。
3.2 绿色判定:newhgid → HS2017 → 前 6 位 → 绿色清单
*- 此处代码需要下载讲义材料查看~
说明:merge 1:1 newhgid 是“逐条对应”的统一编码桥梁;substr(HS2017,1,6) 取前 6 位与绿色清单对齐;第二次 merge m:1 hs6 后未命中的 green 为缺失,用 replace green = 0 补全。
3.3 生成分项金额并合并分类维度
*- 此处代码需要下载讲义材料查看~
说明:分项金额用 金额 * 出口 * green 这类乘法,把“是否出口 / 是否绿色”的 0-1 标记直接乘进金额;最后 merge m:1 经营单位名称 把企业归属到城市。
3.4 三类汇总输出
*- 此处代码需要下载讲义材料查看~
说明:三段 preserve ... restore 在同一循环内分别产出三类结果;企业层面 drop if 经营单位名称 == "" 剔除空企业名,城市层面 drop if missing(市代码) 剔除无法归属城市的记录;collapse (sum) 完成分组加总。
四、合并多年与结果可视化
4.1 合并多年数据
clear all |
说明:capture confirm file + if _rc continue 容忍某些年份文件缺失;首年 use 作基准,其余 append using 纵向拼接。
注意:逐年文件命名须遵循
*_YYYY.dta;缺少年份文件会被静默跳过,跑完请核对年份数量。
4.2 结果可视化
以全国总出口 vs 绿色出口的双轴折线图为例:
*- 此处代码需要下载讲义材料查看~
说明:先按年 collapse (sum) 得全国口径;金额 ÷1e4 换算万美元;占比指标(绿色出口占比、绿色进出口占比)在 collapse 之后用金额相除得到;twoway 用 yaxis(1)/yaxis(2) 实现双轴;graph export ..., width(4800) height(3000) 输出高清图。绘图_各企业历年平均出口.do 逻辑类似,只是先按“企业×年”汇总、再按年对企业求均值,得到“各企业平均”口径。
4.3 结果展示
下图由上述脚本生成:
![]()
![]()
![]()
![]()
点击这里跳转到 RStata 短书平台获取附件:名师讲堂|使用 Stata 筛选绿色进出口、统计各企业及各城市进出口及绿色进出口额与占比数据
评论