楼主: shirley_wong
30248 23

[数据管理求助] 请问删除ST公司时大家一般怎么做 [推广有奖]

11
家鸽hyon 发表于 2019-11-20 10:32:32
如果是按年剔除ST公司,是不是每年剔除后的证券代码都不一样?比如要在国泰安里下载数据,那不是要一年一年下载,然后算一些指标的时候也要一年一年算?请问楼主最后是怎么解决的呢?

12
陌雅黑白 发表于 2019-11-23 21:30:35
家鸽hyon 发表于 2019-11-20 10:32
如果是按年剔除ST公司,是不是每年剔除后的证券代码都不一样?比如要在国泰安里下载数据,那不是要一年一年 ...
同问这个问题,下载数年数据只会显示一个代码和名称,如果要剔除岂不是要一年一年下载,如果时间跨度太大顶不住啊。请问同学你解决了么?

13
家鸽hyon 发表于 2019-11-24 09:44:41
陌雅黑白 发表于 2019-11-23 21:30
同问这个问题,下载数年数据只会显示一个代码和名称,如果要剔除岂不是要一年一年下载,如果时间跨度太大 ...
嗯对,国泰安下数据的时候筛选代码有st和非st选项,不清楚选了以后是以什么为依据筛的。在论坛搜其他数据时发现一种做法,不知道是不是最佳方法,但觉得可以解决问题,人家应该是单另做的一份公司文件,包括每个代码每一年是否为st,最后用相关数据文件和公司文件合并的时候drop剔除掉每个代码st的年份。

14
陌雅黑白 发表于 2019-12-7 16:51:03
家鸽hyon 发表于 2019-11-24 09:44
嗯对,国泰安下数据的时候筛选代码有st和非st选项,不清楚选了以后是以什么为依据筛的。在论坛搜其他数据 ...
谢谢你~我发现如果下载好几年的数据,每年都显示代码和股票简称的话,是可以直接删除掉包含st字段的。如果只显示了代码,可能要按你说的做

15
祥梓 发表于 2020-12-31 10:02:35 来自手机
shirley_wong 发表于 2019-1-31 20:54
stata的具体删除程序是了解的,但是请问大家例如在处理08-17年年的A股数据时,某些股票可能08年是ST,10年摘 ...
国泰安下载的时候,有股票名称,直接剔除名称当年带st. 的就可以

16
等一个天亮 学生认证  发表于 2021-8-20 04:44:48 来自手机
shirley_wong 发表于 2019-1-31 20:54
stata的具体删除程序是了解的,但是请问大家例如在处理08-17年年的A股数据时,某些股票可能08年是ST,10年摘 ...
插个眼,备注一下,求解决

17
一瞬与永恒 发表于 2021-11-19 10:33:24
求问楼主最后怎么做的

18
万人往Carpediem 发表于 2022-9-4 16:49:34
    这个我也遇到了问题,并且考虑了一下午终于被我用了一个小聪明的做法解决了。可以看到我的数据,有些公司在某些年有ST,我的目标是,把有过ST的公司都删除,但是他们在其他年份又不是ST,那么怎么做呢?
    我的代码如下 bys companyid: gen x = _N; drop if ST == 1; bye companied: gen y = _N; z = x - y; keep z == 0
    我的思路是先通过companyid进行分组设置x,然后drop有ST过的数据,这样如果一个公司曾经有过ST,那么后面分组设置的y必定比x小,公司没有ST过,那么z = x-y必定等于0,因此我实现了不用合并数据就能把ST公司给剔除的操作,此处应有掌声......

截屏2022-09-04 16.48.24.png (328.67 KB)

截屏2022-09-04 16.48.24.png

19
万人往Carpediem 发表于 2022-9-4 16:57:15
    可以看到我的数据,一个公司在某些年份有ST,但是没有ST时,ST == 1,那么怎么剔除这种公司呢?我运用了一点小聪明解决了这个问题。    我的代码: bys companyid: gen x = _N                   drop if ST == 1
                   bys companyid:gen y = _N
                   gen z = x - y
                   keep if z == 0
    我的思路:首先对companyid进行分组,生成x变量,然后drop掉ST的数据,那么再次分组生成y变量的时候,如果一个公司ST过,那么他的y值必定比x小,因此z = x - y得到的是大于0的值。综上所述,z=0时,便是没有ST过的公司。


截屏2022-09-04 16.48.24.png (328.67 KB)

截屏2022-09-04 16.48.24.png

20
万人往Carpediem 发表于 2022-9-4 17:03:15
     可以看到我的数据,一个公司在某些年份有ST,但是没有ST时,ST == 1,那么怎么剔除这种公司呢?我运用了一点小聪明解决了这个问题。    我的代码: bys companyid: gen x = _N                  
               drop if ST == 1
               bys companyid:gen y = _N
               gen z = x - y
               keep if z == 0
    我的思路:首先对companyid进行分组,生成x变量,然后drop掉ST的数据,那么再次分组生成y变量的时候,如果一个公司ST过,那么他的y值必定比x小,因此z = x - y得到的是大于0的值。综上所述,z=0时,便是没有ST过的公司。

截屏2022-09-04 16.48.24.png (328.67 KB)

截屏2022-09-04 16.48.24.png

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

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