查看原文
其他

使用 Stata 提取和处理数字经济核心产业分类与国际专利分类参照关系表

RStata RStata 2024-04-02

该课程已经讲解完,感兴趣的小伙伴可以点击文末的阅读原文跳转到 RStata 平台观看视频讲解~


今天我们一起来看下如何使用 Stata 从 pdf 文档中提取表格并处理,具体来说是提取「数字经济核心产业分类与国际专利分类参照关系表(2023)」文件中的专利分类号范围。

首先第一步我们可以使用这个在线 pdf 文本识别应用把 pdf 里面的表格转换成 xlsx 格式的,由于该网站免费转换的文档不能超过 10 页,所以我把这个文档拆分成了两个 pdf 分别转换,得到了下面两个文件:

在线文本识别转换:https://ocr.wdku.net/

  • data1_output.xlsx
  • data2_output.xlsx

然后再手动简单整理下,把两个文档合并起来:

  • data.xlsx

下面就可以用 Stata 处理这个文件了。

读取该文件:

import excel using "data.xlsx"clear first 
remove_some_char " "trim 

remove_some_char 是我现编的 Stata 命令,用于去除所有字符串变量中的空格:

*! remove_some_char " ":直接把所有的 string 变量去除空格
*! remove_some_char " ", trim:直接把所有的 string 变量去除空格,再 strtrim 下
cap prog drop remove_some_char
prog def remove_some_char
 syntax anything [, trim]
 foreach i of varlist _all {
  cap replace `i' = subinstr(`i'`anything'"", .)
  if "`trim'" != "" {
   cap replace `i' = strtrim(`i')
  }
 }
end 

填补下前几个变量的缺失值:

carryforward 数字经济核心产业大类 数字经济核心产业中类 数字经济核心产业小类, replace 
formatallstr %10s 
label data "数据处理:微信公众号 RStata" 
save "数字经济核心产业分类与国际专利分类参照关系表"replace 

formatallstr 也是我现编的,用于快速把所有的字符串变量按照指定格式 format:

*! formatallstr %10s:直接把所有的 string 变量格式化成 %10s
cap prog drop formatallstr
prog def formatallstr
 syntax anything 
 foreach i of varlist _all {
  cap format `i' `anything'
 }
end 

数据中国际专利分类是用“、”符号隔开的,下面我们把这个变量适应顿号分开,然后再转换成长数据:

*- 拆分 IPC
use 数字经济核心产业分类与国际专利分类参照关系表, clear 
gen id = _n 
split 国际专利分类, parse("、")
drop 国际专利分类 
gather 国际专利分类*
order id 
gsort id 
drop var 
drop if value == "" 
ren value IPC 

这里面专利分类号类别有很多种形式,下面我们通过长度来分类:

gen len = strlen(IPC) 
gsort id IPC 
gen ipcid = _n 
tab len 

*>         len |      Freq.     Percent        Cum.
*> ------------+-----------------------------------
*>           4 |          1        0.09        0.09
*>           5 |        202       18.74       18.83
*>           6 |        204       18.92       37.76
*>           7 |        374       34.69       72.45
*>           8 |        121       11.22       83.67
*>           9 |        122       11.32       94.99
*>          10 |         40        3.71       98.70
*>          11 |         14        1.30      100.00
*> ------------+-----------------------------------
*>       Total |      1,078      100.00

save "data1"replace 

然后我们就分别处理不同长度的。

长度为 4 或 5 的都是小类:

use data1, clear 
tab len 
keep if len <= 5
order id ipcid 
drop len 
remove_some_char "*"trim 
save ipcres1, replace 

长度为 6 的是大组的:

use data1, clear 
tab len 
keep if len == 6 
remove_some_char "*"trim 
order id ipcid 
drop len 
save ipcres2, replace 

长度为 7 的也是大组的:

use data1, clear 
tab len 
keep if len == 7 
remove_some_char "*"trim 
order id ipcid 
drop len 
save ipcres3, replace 

长度为 8 的分两种情况:

use data1, clear 
tab len 
keep if len == 8 
keep if !index(IPC, "*")
order id ipcid 
drop len 
save ipcres4, replace 

use data1, clear 
tab len 
keep if len == 8
keep if index(IPC, "*")
order id ipcid 
drop len 
remove_some_char "*"trim 
save ipcres5, replace 

长度为 9、10、11 的也分别处理下:

use data1, clear 
tab len 
keep if len == 9
order id ipcid 
drop len 
remove_some_char "*"trim 
save ipcres6, replace 

use data1, clear 
tab len 
keep if len == 10
order id ipcid 
drop len 
remove_some_char "*"trim 
save ipcres7, replace 

use data1, clear 
tab len 
keep if len == 11
order id ipcid 
drop len 
remove_some_char "*"trim 
save ipcres8, replace 

可以看到 4、6、7、8 其实都是直接的 IPC 分类号,可以合并起来:

*- 合并 4 6 7 8
use ipcres4, clear 
append using ipcres6
append using ipcres7
append using ipcres8
save ipcres4, replace 

*- 删除 6 7 8
cap erase ipcres6.dta
cap erase ipcres7.dta
cap erase ipcres8.dta

这样我们就得到了下面几个文件:

  • ipcres1.dta
  • ipcres2.dta
  • ipcres3.dta
  • ipcres4.dta
  • ipcres5.dta

使用 ipcres1.dta 进行筛选的时候,提取 IPC 分类号的前 4 位字符串就可以匹配筛选了;使用 ipcres2.dta 进行筛选的时候是提取前 5 位;使用 ipcres3.dta 进行筛选的时候是提取前 6 位;使用 ipcres4.dta 进行筛选的时候是直接进行匹配;使用 ipcres5.dta 进行筛选的时候是提取前 7 位。

这部分操作也可以参考平台上的绿色专利筛选课程。

课程信息

该课程已经讲解完,感兴趣的小伙伴可以点击文末的阅读原文跳转到 RStata 平台观看视频讲解~

  1. 直播地址:腾讯会议(需要报名 RStata 培训班参加)
  2. 讲义材料:需要购买 RStata 名师讲堂会员,详情可阅读:一起来学习 R 语言和 Stata 啦!学习过程中遇到的问题也可以随时提问!

更多关于 RStata 会员的更多信息可添加微信号 r_stata 咨询:

附件下载(点击文末的阅读原文即可跳转):

https://rstata.duanshu.com/#/brief/course/b2c71978336b4b39b69f05d6537d9d8f


继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存