构造公司是否ST、*ST或PT的过程可以分为几个步骤。首先,需要准备一个包含公司股票代码、名称、证券简称等信息的数据集,并且数据集中至少要有从1990年到2023年的历史记录。以下是使用Stata软件进行这一过程的代码示例:
```stata
* 假设数据已经导入,并且有一个名为"company_data.dta"的数据库,其中包含变量stock_code(股票代码)、year_end_name(年末证券简称)和year(年份)
clear all
use company_data, clear
* 为ST、PT创建虚拟变量
gen is_ST = strpos(year_end_name,"ST") > 0 
gen is_PT = strpos(year_end_name,"PT") > 0 
gen is_ST_or_PT = (is_ST | is_PT)
* 判断公司是否在1990-2023年间的任何一年被标记为ST、PT
bysort stock_code: egen is_ST_any_year = max(is_ST)
replace is_ST_any_year = 0 if missing(is_ST_any_year) 
bysort stock_code: egen is_PT_any_year = max(is_PT)
replace is_PT_any_year = 0 if missing(is_PT_any_year)
* 如果需要计算公司是否在1990-2023年被标记为ST或PT
bysort stock_code: egen is_ST_or_PT_any_year = max(is_ST_or_PT)
replace is_ST_or_PT_any_year = 0 if missing(is_ST_or_PT_any_year) 
* 清除临时变量以节省内存(可选)
drop is_ST is_PT is_ST_or_PT
* 显示结果
list stock_code year is_ST is_PT is_ST_or_PT is_ST_any_year is_PT_any_year is_ST_or_PT_any_year in 1/20 //显示前20行数据作为检查
```
这段代码首先使用`strpos()`函数来判断每个公司每年的证券简称中是否包含"ST"或"PT",然后通过`egen max()`计算每个公司在整个时间区间内是否有任一年份被标记为ST、PT或者两者之一。最后,可以使用`list`命令检查结果。
请注意,在实际应用中,需要将数据文件名和变量名称替换为自己的实际情况,并确保数据集已经导入并包含所需的字段。此外,这段代码假设每年的数据是独立的记录(即每个公司每年有单独的一行),如果是连续的时间序列数据,则可能需要先按年份分组或使用其他方法处理。
此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用