楼主: yl36133
31699 15

[数据管理求助] 如何用stata剔除st公司 [推广有奖]

11
Sun_00 发表于 2021-5-18 14:50:09
drop if substr(stknme,1,4)=="*ST"

12
悠风~ 发表于 2022-6-16 16:46:00
jerry77yang 发表于 2021-3-23 21:08
gen st=regexm(stockname,"ST")
drop if st==1
drop st
你好,请问第三条代码是不是多余了,前两条已经可以去除ST了

13
溪韺s 发表于 2022-8-21 23:42:42
jerry77yang 发表于 2021-3-23 21:08
gen st=regexm(stockname,"ST")
drop if st==1
drop st
这样删除的是企业一年的,而不能全部删除出现ST的企业的部年份的数据

14
jusim 发表于 2023-4-27 15:30:17
drop if substr(stock_name,1,2) == "ST"

15
睡不醒w 学生认证  发表于 2024-4-23 16:41:02
jerry77yang 发表于 2021-3-23 21:08
gen st=regexm(stockname,"ST")
drop if st==1
drop st
csmar下载的数据中,如果公司名称包含ST,就说明当年的公司是ST公司吗?所以可以根据证券名称删除相关年份的ST公司?

16
赵安豆 发表于 2024-7-29 21:29:48
在Stata中剔除ST公司的数据主要涉及数据清洗和条件筛选步骤。首先需要理解,ST(Special Treatment)是证券市场对财务状况或其他状况出现异常的上市公司的股票交易进行区别对待的一种措施。在中国股市,ST公司是指那些被特别处理的上市公司。

要从数据集中剔除这些公司,你可能需要一个标志变量或日期序列来判断哪些公司在何时处于ST状态。以下是在Stata中执行此操作的基本步骤:

1. **加载数据**:首先确保你的数据集已经导入Stata。

2. **创建/识别ST标识符**:
   - 如果原始数据集中已经包含了一个字段,比如“is_ST”或类似的,用以指示公司是否处于ST状态,你就可以直接使用这个字段。
   - 如果没有这样的字段,你需要根据其他信息(如财务报表、公告等)来创建一个。这可能涉及到外部数据的导入和匹配。

3. **时间序列处理**:
   - 由于ST状态是动态变化的,确保你的数据集包括日期或年份信息,并将其设置为Stata的时间序列格式。
   - 使用`tsset`命令告知Stata数据的时间序列结构。

4. **筛选非ST公司**:
   - 使用`keep if`或者`drop if`命令来保留或删除特定条件下的观测值。例如,如果有一个变量叫做`is_ST`(1代表是ST公司,0代表不是),你可以使用以下命令来剔除ST公司的数据:
     ```stata
     drop if is_ST == 1
     ```
   - 或者,如果你想基于某个时间点前的数据状态进行判断(比如执行的上一年的数据),你可能需要在筛选之前对数据进行一些额外的处理。例如,如果`is_ST`是根据下一财年的情况来定义的,你需要先计算出每个公司的“前一年”状态。

5. **保存修改后的数据集**:使用`save`命令将经过清洗和筛选的数据集保存下来。

关于剔除时间点的问题,确实需要注意ST状态变化的时间线。通常情况下,上市公司在满足特定条件后被标记为ST公司,这一决定往往是在年报发布或财务审计结果公布之后进行的。因此,在分析上一年度数据时,你可能需要考虑到这些公司在其报告年度结束后的状态变动,并据此调整筛选标准。

最后,请确保所有操作都符合你的研究目标和数据可用性,有时可能还需要处理因ST状态变化导致的数据缺失等问题。

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



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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-9 17:29