|
Stata看点
文献来源
刘秉镰等(2022)以被参控股公司的注册年份为时间,计算每个上市公司每年度在各省份新设子公司的数量。此外,根据母公司是否在本地和异地设立子公司,生成相应的虚拟变量。
- 删除参股比例小于50%以及持股不详的样本,只保留控股样本
- 删除子公司注册地址位于境外和北京、天津、上海、重庆4个直辖市的样本
- 刘秉镰,张伟静,刘玉海.地方经济政策不确定性与企业扩张选址——基于上市公司设立子公司的证据[J].经济地理,2022,42(05):23-35.
数据来源
国泰安。
- 下载表名 上市公司子公司联营合营情况表
- 数据区间 1999-12-31 至 2021-12-31
- 选择代码 全部代码
- 输出类型 Excel2007格式(*.xlsx)
- 选择字段 证券代码[Symbol] 年度区间[EndDate] 关联公司名称[RalatedParty] 注册地[RegisterAddress] 区域标识[Sgnrgn] 是否退出[ISExit]
- 筛选条件 [DirectHoldingRatio] >= '50' [AreaName] = '中国'
清洗数据
clear
import excel "D:\Download\上市公司子公司联营合营情况表184219666\STK_NotesSubJoint.xlsx", sheet("sheet1") firstrow
foreach var of varlist * {
label variable `var' "`=`var'[1]'"
replace `var' = "" if _n == 1
destring `var' , replace
}
drop in 1/2
g year = substr(E,1,4)
drop if IS == "1"
drop IS E
foreach i in 北京 天津 上海 重庆{
drop if regexm(Re, "`i'") == 1
}
drop if Re == ""
rename Sy Stkcd
order St y
destring S* y, force replace
drop Sg
* 保留公司首次出现的子公司
sort S y
g n = _n
bys S Ra: egen m = min(n)
order n m
sort n
keep if n == m
drop n m
order S y Re参考以下做法,放入do文件运行:
- Mr Figurant:Stata学习:如何构建地区制度期望落差变量?
* 省份识别
cap drop Province flag
g Province = ""
g flag = 0
foreach i in 北京 天津 上海 重庆 河北 山西 辽宁 吉林 黑龙江 江苏 浙江 ///
安徽 福建 江西 山东 河南 湖北 湖南 广东 海南 四川 贵州 ///
云南 陕西 甘肃 青海 内蒙古 广西 西藏 宁夏 新疆{
replace Province = "`i'" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 北京 西城 丰台{
replace Province = "北京" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 天津{
replace Province = "天津" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 石家庄{
replace Province = "河北" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 太原{
replace Province = "山西" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 呼和浩特 内蒙{
replace Province = "内蒙古" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 沈阳{
replace Province = "辽宁" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 长春{
replace Province = "吉林" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 哈尔滨{
replace Province = "黑龙江" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 上海 浦东新区{
replace Province = "上海" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 南京{
replace Province = "江苏" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 杭州{
replace Province = "浙江" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 合肥{
replace Province = "安徽" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 福州{
replace Province = "福建" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 南昌{
replace Province = "江西" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 济南{
replace Province = "山东" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 郑州{
replace Province = "河南" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 武汉{
replace Province = "湖北" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 长沙{
replace Province = "湖南" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 广州{
replace Province = "广东" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 南宁{
replace Province = "广西" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 海口{
replace Province = "海南" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 重庆 九龙坡区{
replace Province = "重庆" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 成都{
replace Province = "四川" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 贵阳{
replace Province = "贵州" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 昆明{
replace Province = "云南" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 拉萨{
replace Province = "西藏" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 西安{
replace Province = "陕西" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 兰州{
replace Province = "甘肃" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 西宁{
replace Province = "青海" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 银川{
replace Province = "宁夏" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 乌鲁木齐{
replace Province = "新疆" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 石家庄 张家口 承德 唐山 秦皇岛 廊坊 保定 沧州 衡水 邢台 邯郸{
replace Province = "河北" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 太原 大同 朔州 忻州 阳泉 晋中 吕梁 长治 临汾 晋城 运城{
replace Province = "山西" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 呼伦贝尔 通辽 赤峰 巴彦淖尔 乌兰察布 包头 鄂尔多斯 乌海{
replace Province = "内蒙古" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 大连 铁岭 阜新 抚顺 朝阳 本溪 辽阳 鞍山 盘锦 锦州 葫芦岛 营口 瓦房店 丹东 连市沙河口{
replace Province = "辽宁" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 长春 白城 松原 吉林 四平 辽源 白山 通化{
replace Province = "吉林" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 黑河 伊春 齐齐哈尔 鹤岗 佳木斯 双鸭山 绥化 大庆 七台河 鸡西 牡丹江{
replace Province = "黑龙江" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 苏州 连云港 徐州 宿迁 淮安 盐城 泰州 扬州 镇江 南通 常州 无锡 张家港 吴江 宜兴 江阴 靖江 常熟 昆山 太仓 武进区{
replace Province = "江苏" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 湖州 嘉兴 绍兴 舟山 宁波 金华 衢州 台州 丽水 温州 富阳 嘉善 永康 诸暨{
replace Province = "浙江" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 淮北 亳州 宿州 蚌埠 阜阳 淮南 滁州 六安 马鞍山 芜湖 宣城 巢湖{
replace Province = "安徽" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 宁德 南平 三明 莆田 龙岩 泉州 漳州 厦门 晋江{
replace Province = "福建" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 九江 景德镇 上饶 鹰潭 抚州 新余 宜春 萍乡 吉安 赣州{
replace Province = "江西" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 德州 滨州 东营 烟台 威海 淄博 潍坊 聊城 泰安 莱芜 青岛 龙口 邹平 临沭 禹城 阳谷 宁阳 沂源{
replace Province = "山东" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 安阳 鹤壁 濮阳 新乡 焦作 三门峡 开封 洛阳 商丘 许昌 平顶山 长葛 新郑{
replace Province = "河南" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 十堰 襄樊 随州 荆门 孝感 宜昌 黄冈 鄂州 荆州 黄石 咸宁 潜江 武昌珞瑜路{
replace Province = "湖北" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 岳阳 张家界 常德 益阳 湘潭 株洲 娄底 怀化 邵阳 衡阳 永州 郴州 浏阳 宁乡{
replace Province = "湖南" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 珠海 深圳 韶关 梅州 河源 清远 潮州 揭阳 汕头 肇庆 惠州 佛山 东莞 中山 怀集县 江门 台山 湛江{
replace Province = "广东" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 桂林 南宁 柳州 梧州 北海 防城港 钦州 贵港 玉林 百色 贺州 河池 来宾 崇左{
replace Province = "广西" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 三亚 三沙 儋州{
replace Province = "海南" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 广元 巴中 绵阳 德阳 达州 南充 遂宁 广安 资阳 眉山 雅安{
replace Province = "四川" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 遵义 六盘水 安顺 铜仁 毕节 黔东南 黔南 黔西南 {
replace Province = "贵州" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 昭通 丽江 曲靖 保山 玉溪 临沧 普洱{
replace Province = "云南" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 日喀则 昌都 林芝 山南 那曲{
replace Province = "西藏" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 榆林 延安 铜川 渭南 宝鸡 咸阳 商洛 汉中 安康 韩城 杨凌农业{
replace Province = "陕西" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 嘉峪关 酒泉 张掖 金昌 武威 白银 庆阳 平凉 定西 天水 陇南{
replace Province = "甘肃" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 海东 互助县{
replace Province = "青海" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 石嘴山 吴忠 中卫 固原{
replace Province = "宁夏" if regexm(Reg, "`i'") == 1 & Province == ""
}
foreach i in 克拉玛依 吐鲁番 哈密 库尔勒{
replace Province = "新疆" if regexm(Reg, "`i'") == 1 & Province == ""
}
* 继续排除直辖市数据
foreach i in 北京 天津 上海 重庆{
drop if regexm(P, "`i'") == 1
}
foreach i in 东城区 西城区 崇文区 宣武区 朝阳区 丰台区 石景山区 ///
海淀区 门头沟区 房山区 通州区 顺义区 昌平区 大兴区 怀柔区 平谷区{
drop if regexm(Reg, "`i'") == 1 & f == 0
}
foreach i in 滨海新区 和平区 河东区 河西区 南开区 河北区 红桥区 东丽区 西青区 ///
津南区 北辰区 武清区 宝坻区 静海区 宁河区 蓟州区{
drop if regexm(Reg, "`i'") == 1 & f == 0
}
foreach i in 黄浦区 徐汇区 长宁区 静安区 普陀区 虹口区 杨浦区 浦东新区 闵行区 ///
宝山区 嘉定区 金山区 松江区 青浦区 奉贤区 崇明区 浦东{
drop if regexm(Reg, "`i'") == 1 & f == 0
}
foreach i in 万州区 黔江区 涪陵区 渝中区 大渡口区 江北区 沙坪坝区 九龙坡区 南岸区 ///
北碚区 渝北区 巴南区 长寿区 江津区 合川区 永川区 南川区 綦江区 大足区 ///
璧山区 铜梁区 潼南区 荣昌区 开州区 梁平区 武隆区{
drop if regexm(Reg, "`i'") == 1 & f == 0
}
foreach i in 香港 澳门 台湾 {
drop if regexm(Reg, "`i'") == 1 & f == 0
}
drop if Reg == "中国"
drop if Reg == "中国大陆"
drop if Reg == "中国内地"
order P Re
replace flag = 1 if Province != ""
tabu flag
* list Re if f == 0匹配了:
flag | Freq. Percent Cum.
------------+-----------------------------------
0 | 9,361 10.40 10.40
1 | 80,656 89.60 100.00
------------+-----------------------------------
Total | 90,017 100.00这里还需要更多人工识别和补齐,但本文不再展开。
调用:
- 如何构建数字普惠金融变量:上市公司注册地城市信息(注册地.dta)
继续计算:
rename Reg Z
rename S Symbol
merge m:1 S using 注册地, nogen keep(1 3)
* 子公司省份前两个字
g M = substr(Province,1,6)
* 是否同省
g same = (M == Prov2)
g diff = (M != Prov2)计算每个上市公司每年度在各省份新设子公司的数量:
bys S y Z: egen 各省份新设子公司的数量 = count(y)是否在本地和异地设立子公司,生成相应的虚拟变量:
bys S y: egen 本地新设立子公司 = sum(same)
bys S y: egen 异地新设立子公司 = sum(diff)
replace 本 = 1 if 本 > 1
replace 异 = 1 if 异 > 1保存1:
keep S y 各 本 异
duplicates drop
tabstat 各, by(y) s(N mean sd min p25 p50 p75 max) c(s)
list in 1/5
save 各省份新设子公司的数量得到:
+---------------------------------------------+
| Symbol year 各省~量 本地~司 异地~司 |
|---------------------------------------------|
1. | 1 1999 1 1 1 |
2. | 1 1999 2 1 1 |
3. | 1 2020 1 1 0 |
4. | 2 1999 1 1 1 |
5. | 2 1999 9 1 1 |
+---------------------------------------------+
Summary for variables: 各省份新设子公司的数量
Group variable: year
year | N Mean SD Min p25 p50 p75 Max
---------+--------------------------------------------------------------------------------
1999 | 759 2.54809 3.199603 1 1 1 3 31
2000 | 568 1.670775 1.607651 1 1 1 2 16
2001 | 650 1.690769 1.621715 1 1 1 2 15
2002 | 538 1.581784 1.295244 1 1 1 2 11
2003 | 587 1.55707 1.904207 1 1 1 2 37
2004 | 819 1.544567 1.431877 1 1 1 2 17
2005 | 616 1.391234 1.128142 1 1 1 1 13
2006 | 665 1.428571 1.181469 1 1 1 1 13
2007 | 1094 1.702011 1.944061 1 1 1 2 28
2008 | 1097 1.678213 1.895396 1 1 1 2 24
2009 | 1170 1.833333 2.320087 1 1 1 2 36
2010 | 1319 1.666414 1.6893 1 1 1 2 21
2011 | 1788 1.658837 1.663979 1 1 1 2 29
2012 | 1744 1.635321 1.92219 1 1 1 2 38
2013 | 1767 1.517827 1.254931 1 1 1 2 16
2014 | 1588 1.45466 1.244455 1 1 1 1 28
2015 | 1866 1.57717 1.510888 1 1 1 2 31
2016 | 2242 1.599019 1.672482 1 1 1 2 36
2017 | 2747 1.645795 1.55716 1 1 1 2 31
2018 | 2419 1.50186 1.458091 1 1 1 2 31
2019 | 2481 1.482467 1.214411 1 1 1 2 25
2020 | 2913 1.593546 1.640905 1 1 1 2 47
2021 | 2747 1.582454 1.498248 1 1 1 2 38
---------+--------------------------------------------------------------------------------
Total | 34184 1.609642 1.649662 1 1 1 2 47
------------------------------------------------------------------------------------------保存2:
drop 各
duplicates drop
tabu 本 异
save 本地异地新设立子公司得到结果
本地新 | 异地新设立子公
设立子 | 司
公司 | 0 1 | Total
-----------+----------------------+----------
0 | 0 10,508 | 10,508
1 | 10,218 6,802 | 17,020
-----------+----------------------+----------
Total | 10,218 17,310 | 27,528 (完) |
|