capmkdir"keyIPCtab" forval i = 4/12 { preserve keepif len == `i' drop len save keyIPCtab/`i', replace restore }
*- uniqIPCtab capmkdir"uniqIPCtab" forval i = 4/12 { use uniq_ipc.dta, clear gen keyIPC = substr(uniq_ipc, 1, `i') joinby keyIPC using keyIPCtab/`i' save uniqIPCtab/`i', replace }
use 每种IPC对应的关键核心技术领域, clear joinby uniq_ipc using 专利数据与行业小类代码简易对照表, unmatched(both) tab _m dropifmi(国民经济行业代码) drop _m save classdf, replace listin 1/10
这样就同时知道了每个 IPC 对应的关键数字领域和行业。
处理专利数据
由于专利数据中的 IPC 分类号是用分号分隔的,所以我们需要先把它们分隔开:
*- 选择 2010-2012年数据为例: use patent_small3/2010.dta, clear *> (数据处理:微信公众号 RStata) append using patent_small3/2011.dta *> (variable newipzlid was str10, now str11 to accommodate using data's values) *> (variable IPC was str733, now str891 to accommodate using data's values) append using patent_small3/2012.dta dropifmi(IPC) *> (0 observations deleted) compress *> variable 省代码 was double now long *> variable 市代码 was double now long *> variable 县代码 was double now long *> (24,342,384 bytes saved) keep newipzlid IPC 申请日 save tempdata, replace *> (file tempdata.dta not found) *> file tempdata.dta saved
拆分 IPC:
*- 此处代码需下载讲义材料查看~
然后就可以直接把 v3 创建成变量了:
mata: stata("cap drop IPC") st_addvar("strL", "IPC") st_sstore(., "IPC", v3') end
drop n duplicates drop _all, force *> Duplicates in terms of newipzlid 申请日 IPC *> (0 observations are duplicates) *- 合并两部分 append using tempdata1 gsort newipzlid save tempdata2, replace *> (file tempdata2.dta not found) *> file tempdata2.dta saved list in 1/5 *> +-------------------------------------+ *> | newipzlid 申请日 IPC | *> |-------------------------------------| *> 1. | 2010000002 2010-06-02 A47J37/08 | *> 2. | 2010000003 2010-01-28 A47J37/10 | *> 3. | 2010000004 2010-06-18 A47J37/12 | *> 4. | 2010000005 2010-06-18 A21B5/08 | *> 5. | 2010000005 2010-06-18 A47J37/12 | *> +-------------------------------------+
匹配行业:
*- 此处代码需下载讲义材料查看~
然后就可以计算 TF 公式里面的各个变量了:
use tempdata3, clear *> (数据处理:微信公众号 RStata) *- 每个专利 IPC 所涉及的关键核心技术领域数量 bysort newipzlid: egen C_pwt = nvals(关键核心技术领域) *> (7,284,048 missing values generated) replace C_pwt = 0 ifmi(C_pwt) *> (7,284,048 real changes made) *- 每个专利 IPC 所涉及的所有技术领域数量 bysort newipzlid: egen C_pt = nvals(国民经济行业代码) *- 截止 t 年的专利数量 gen year = substr(newipzlid, 1, 4) destring year, replace *> year: all characters numeric; replaced as int order year destring newipzlid, replace *> newipzlid: all characters numeric; replaced as double save tempdata4, replace *> (file tempdata4.dta not found) *> file tempdata4.dta saved use tempdata4, clear *> (数据处理:微信公众号 RStata) bysort year: egen patents_t = nvals(newipzlid) keep year patents_t duplicatesdrop _all, force *> Duplicates in terms of year patents_t *> (27,231,460 observations deleted) gsort year replace patents_t = sum(patents_t) *> (2 real changes made) save tempdata5, replace *> (file tempdata5.dta not found) *> file tempdata5.dta saved *- 截至 t 年,包含技术领域 w 的专利数 use tempdata4, clear *> (数据处理:微信公众号 RStata) dropifmi(关键核心技术领域) *> (7,284,048 observations deleted) bysort year 关键核心技术领域: egen patents_wt = nvals(newipzlid) keep year 关键核心技术领域 patents_wt duplicatesdrop _all, force *> Duplicates in terms of year 关键核心技术领域 patents_wt *> (19,947,394 observations deleted) bysort 关键核心技术领域: replace patents_wt = sum(patents_wt) *> (14 real changes made) save tempdata6, replace *> (file tempdata6.dta not found) *> file tempdata6.dta saved *- 合并 tempdata4、tempdata5、tempdata6 use tempdata4, clear *> (数据处理:微信公众号 RStata) mergem:1 year using tempdata5 *> Result Number of obs *> ----------------------------------------- *> Not matched 0 *> Matched 27,231,463 (_merge==3) *> ----------------------------------------- drop _m mergem:1 year 关键核心技术领域 using tempdata6 *> Result Number of obs *> ----------------------------------------- *> Not matched 7,284,048 *> from master 7,284,048 (_merge==1) *> from using 0 (_merge==2) *> Matched 19,947,415 (_merge==3) *> ----------------------------------------- drop _m dropifmi(patents_wt) *> (7,284,048 observations deleted) gen z = log(patents_t/patents_wt) * C_pwt / C_pt keep newipzlid 关键核心技术领域 z 申请日 gsort newipzlid 关键核心技术领域 duplicatesdrop _all, force *> Duplicates in terms of newipzlid 申请日 关键核心技术领域 z *> (18,008,601 observations deleted) spread 关键核心技术领域 z foreach i of varlist _all { *> 2. cap replace `i' = 0 if mi(`i') *> 3. } tostring newipzlid, replaceformat(%12.0f) *> newipzlid was double now str11 save tempdata7, replace *> (file tempdata7.dta not found) *> file tempdata7.dta saved
评论