安信热点资讯

 找回密码
 立即注册
查看: 105|回复: 1

Stata学习:如何构建企业新设子公司变量?

[复制链接]

3

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-9-22 17:05:18 | 显示全部楼层 |阅读模式
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 (完)
回复

使用道具 举报

0

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 5 天前 | 显示全部楼层
求沙发
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|安信热点资讯

GMT+8, 2025-3-15 05:02 , Processed in 0.157211 second(s), 23 queries .

Powered by Discuz! X3.4

快速回复 返回顶部 返回列表