【升级ric2matrix.ado】纠正当reportname 和partnername 无交集元素时,替代程序4的错误。
【调用格式】ric2matrix reportname partnername industryname value
其中:reportname=汇报国名称(string)
partnername=伙伴国名称(string)
industryname=行业名称(string)
value=值(num)
【NBER working papers】 百度网盘下载
链接:https://pan.baidu.com/s/17tgSzVmwMBbxY87KnwRMlw
提取码:eriz
篇名、作者、时间见文后。
/*ric2matrix = Reshape industry and countries to matrix format
将进口国-出口国-行业数据,转换为规定格式矩阵,即进口国*行业作为行,出口国作为列的矩阵。
# *************************作者信息*******************************
# # Edward C.Stone *
# # Meitan,Guizhou,China *
# # March.29,2022,updated April 2022.14,2022 *
# # [email protected] *
# # [email protected] *
******************************************************************
将现有数据转换为规定格式的矩阵,结果格式为:
【格式一】 【格式二】
indus import export values 出口1 出口2 出口3...
行业1 进口1 出口1 ## 行业1 进口1 ## ## ##
行业1 进口2 出口1 ## 行业1 进口2 ## ## ##
行业1 进口3 出口1 ## |------→\ 行业1 进口3 ## ## ##
行业1 进口1 出口2 ## |------→/ ... ... ... ... ...
行业1 进口2 出口2 ## 行业2 进口1 ## ## ##
行业1 进口3 出口2 ## 行业2 进口2 ## ## ##
行业1 进口1 出口3 ## 行业2 进口3 ## ## ##
行业1 进口2 出口3 ##
行业1 进口3 出口3 ##
【调用格式】ric2matrix reportname partnername industryname value
其中reportname=汇报国名称(string),partnername=伙伴国名称(string),industryname=行业名称(string),value=值(num)*/
//0.定义命令ric2matrix
capture program drop ric2matrix
program define ric2matrix
version 16.0
args report partner industry value
gen partner_name=""
gen partner_type=.
gen industry2=""
gen country=""
label var partner_name "伙伴名称"
label var partner_type "伙伴编码"
duplicates report `report'
local n_re=r(unique_value)
duplicates report `partner'
local n_pa=r(unique_value)
duplicates report `industry'
local n_ind=r(unique_value)
levelsof `report',local (rep)
levelsof `partner',local (pat)
levelsof `industry',local (ind)
//1.伙伴国编码辅助说明
local px=1
foreach p of local pat{
replace partner_name="`p'" in `px'
replace partner_type=`px' in `px'
local px=`px'+1
}
//2.重构格式,使用行均值替代缺失值
local pp=1
foreach p of local pat{
gen partner_`pp'=.
local ii=1
foreach i of local ind{
local jj=1
foreach j of local rep{
qui{
local r=`n_re'*(`ii'-1)+`jj'
sum `value' if `industry'=="`i'" & `report'=="`j'"
local n=r(mean)
sum `value' if `industry'=="`i'" & `report'=="`j'" & `partner'=="`p'"
local m=r(mean)
replace partner_`pp'=`m' in `r'
//下边一行是将缺失值替换为平均值
replace partner_`pp'=`n' if partner_`pp'==.
replace country="`j'" in `r'
replace industry2="`i'" in `r'
}
dis "`p'" " - " "`i'" " : " `pp' "-" `jj' "-" `ii'
local jj=`jj'+1
}
local ii=`ii'+1
}
local pp=`pp'+1
}
//3.去除不必要变量
keep country industry2 partner_*
drop if country==""
//4.去除对角线元素,当汇报国=伙伴国时,值为空。注意第89行含义。
//tips:如果汇报国集合和伙伴国集合没有交集元素时,可能会提示错误。
local rr=`n_ind'*`n_re'
//第91行是调试后的纠正。
local nn=`n_ind'-1
forvalues i=1/`nn'{
local jj=1
foreach j of local rep{
foreach p of local pat{
qui sum partner_type if partner_name=="`j'"
local py=r(mean)
if `py'!=.{
local r=`n_re'*(`i'-1)+`jj'
if "`j'"=="`p'" {
replace partner_`py'=. in `r'
}
}
}
local jj=`jj'+1
}
}
end
故乡的春天
火漩·春山新绿
上坝·远处的印子山