use ipcdf3.dta, clear append using ipcdf4.dta gen 主分类号 = class + IPC bysort 主分类号: gen matchid = _n tab matchid forval i = 1/4 { preserve keepif matchid == `i' save ipcdf34_`i', replace restore }
再分别和专利数据匹配即可:
forval i = 1/4 { use 上市公司与专利数据匹配结果.dta, clear compress mergem:1 主分类号 using ipcdf34_`i'.dta keepif _m == 3 drop _m save data34_`i', replace }
最后我们再把上面三次匹配的结果合并起来就得到了所有的上市公司绿色专利数据:
* 合并所有的结果 use data34_1, clear forval i = 2/4 { append using data34_`i' } append using data2a append using data2b append using data1 drop matchid duplicatesdrop _all, force save 上市公司绿色专利匹配结果(根据主分类号筛选).dta, replace
根据分类号筛选
分类号变量中每个专利包含多个 IPC 分类号,因此需要预先分离开:
use 上市公司与专利数据匹配结果.dta, clear split 分类号, parse(";") gen patentid = _n ren 分类号 分类号_orign save tempa, replace
* 通过循环转成长数据 use tempa, clear keep patentid 年份 - 摘要附图存储路径 分类号_orign 分类号1 ren 分类号1 分类号 save tempa2, replace
forval i = 2/55{ use tempa, clear keep patentid 年份 - 摘要附图存储路径 分类号_orign 分类号`i' ren 分类号`i' 分类号 append using tempa2 dropifmissing(分类号) save tempa2, replace } use tempa2, clear replace 分类号 = ustrregexs(1) if ustrregexm(分类号, "(.*)(\(+)") save tempa2, replace
然后就可以和上面类似的方法进行绿色专利筛选了:
* 根据分类号筛选绿色专利 use tempa2, clear genclass = substr(分类号, 1, 3) mergem:1 class using ipcdf1.dta keepif _m == 3 drop _m save adata1, replace
use tempa2, clear genclass = substr(分类号, 1, 4) mergem:1 class using ipcdf2a.dta keepif _m == 3 drop _m save adata2a, replace
use tempa2, clear genclass = substr(分类号, 1, 4) mergem:1 class using ipcdf2b.dta keepif _m == 3 drop _m save adata2b, replace
forval i = 1/4 { use ipcdf34_`i'.dta, clear ren 主分类号 分类号 save aipcdf34_`i'.dta, replace }
forval i = 1/4 { use tempa2, clear compress mergem:1 分类号 using aipcdf34_`i'.dta keepif _m == 3 drop _m save adata34_`i', replace }
use adata34_1, clear forval i = 2/4 { append using adata34_`i' } append using adata2a append using adata2b append using adata1 drop matchid patentid 分类号 ren 分类号_orign 分类号 duplicatesdrop _all, force save 上市公司绿色专利匹配结果(根据分类号筛选).dta, replace
use 上市公司专利申请数量面板数据(1992~2019).dta, clear merge 1:1 股票代码 年份 using data1 drop _m merge 1:1 股票代码 年份 using data2 drop _m foreach i of varlist 发明型绿色专利_根据主分类号筛选 - 总绿色专利数量_根据分类号筛选 { replace`i' = 0 ifmissing(`i') } order 年份 股票代码 设计型专利 - 总专利数量 发明型绿色专利_根据主分类号筛选 - 总绿色专利数量_根据分类号筛选 label data "数据处理:微信公众号 RStata" save 上市公司专利申请数量及绿色专利申请数量面板数据(1992~2019).dta
评论