全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
2168 4
2023-05-26
我想要根据股票代码区别这家公司是在上海交易所上市的还是在深圳交易所上市的,从而生成一个虚拟变量,求问stata代码该怎么写?希望各位大神帮帮我,万分感谢!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2023-5-26 15:20:00
饭后平躺 发表于 2023-5-26 15:06
用substr截取前三位数字,加股票代码判断条件就可以了。

沪市主板股票代码:600、601、603、605开头
您看我这么写对吗?gen treat = strmatch( Symbol , "60????") | strmatch( Symbol , "90????")| strmatch( Symbol , "688???")
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2024-7-27 17:49:33
在Stata中,你可以使用`generate`命令来创建一个新的虚拟变量,该变量可以根据股票代码判断公司是在上海交易所还是深圳交易所上市。假设你的股票代码存储在一个名为`stock_code`的变量中。

一般而言,股票代码可以帮助我们识别股票所属的交易所:
- 上海证券交易所(SSE):60开头
- 深圳证券交易所(SZSE):00或30开头

以下是在Stata中的操作步骤和命令:

1. 首先,确保你的数据集已经加载到Stata中,并且股票代码字段`stock_code`已经被定义为数值类型。

2. 然后使用下面的代码来创建一个新的虚拟变量(例如命名为`exchange`),其中如果股票在上交所上市则该变量值为1,否则为0:

```stata
gen exchange = 0 // 初始化所有公司为深圳交易所

replace exchange = 1 if substr(stock_code,1,2)=="60" // 上海证券交易所的股票代码以60开头
```

或者使用更简洁的`egen`命令结合`cut()`函数,如果需要考虑所有的规则:

```stata
egen str3 stock_prefix = cut(stock_code), at(0 60 100 200 300) labels(SZSE SSE SZSE)
replace exchange = (stock_prefix == "SSE")
drop stock_prefix // 清除临时变量,保持数据集干净。
```

但是请注意,在现实使用中,你可能需要考虑到以下特殊情况:
- 深交所的中小板股票代码以“002”开头(例如,“002XXX”)
- 创业板股票代码以“30”开头(例如,“30XXXX”)

因此,为了更准确地识别交易所,可以稍微修改上面的命令:

```stata
gen exchange = 0 // 初始化所有公司为深圳交易所

replace exchange = 1 if substr(stock_code,1,2)=="60" // 上海证券交易所的股票代码以60开头
replace exchange = 1 if substr(stock_code,1,3)=="002" // 深交所中小板(虽然以“00”开头,但这里进行特判)
replace exchange = 0 if substr(stock_code,1,2)=="30" // 创业板股票代码以“30”开头

// 另一种方式:使用条件表达式
gen exchange = (substr(stock_code,1,2) == "60") + (substr(stock_code,1,3) == "002")
```

这样,`exchange`变量就会根据股票代码识别出公司是在上海交易所还是深圳交易所上市了。希望这个解答对你有帮助!

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群