如何在Stata之前删除所有观察结果?

时间:2013-03-30 00:04:16

标签: stata

使用Stata,如果符合某个标准,我想放弃当前观察之前的所有观察结果。

准确地说,在此示例中,我想放弃使用close 0进行观察之前出现的所有观察结果。

t   close   id  rdate
MPC 0       MPC 31may2011
MPC 0       MPC 01jun2011
MPC 0       MPC 24jun2011
MPC 37.65   MPC 27jun2011
MPC 38.7    MPC 28jun2011
MPC 40.07   MPC 29jun2011
MPC 0       MPC 30jun2011
MPC 42.2    MPC 01jul2011
MPC 42.21   MPC 05jul2011
MPC 41.89   MPC 06jul2011
MPC 41.78   MPC 07jul2011
MPC 41.41   MPC 08jul2011
MPC 40.1    MPC 11jul2011
MPC 40.48   MPC 12jul2011
MPC 39.96   MPC 13jul2011
MPC 38.64   MPC 14jul2011
MPC 39.16   MPC 15jul2011
MPC 39.12   MPC 18jul2011
MPC 39.74   MPC 19jul2011
MPC 39.53   MPC 20jul2011
MPC 40.1    MPC 21jul2011
MPC 40.57   MPC 22jul2011
MPC 41.37   MPC 25jul2011
MPC 43.05   MPC 26jul2011

之类的:by t: drop if _n* < _n & close == 0必须导致:

t   close   id  rdate
MPC 42.2    MPC 01jul2011
MPC 42.21   MPC 05jul2011
MPC 41.89   MPC 06jul2011
MPC 41.78   MPC 07jul2011
MPC 41.41   MPC 08jul2011
MPC 40.1    MPC 11jul2011
MPC 40.48   MPC 12jul2011
MPC 39.96   MPC 13jul2011
MPC 38.64   MPC 14jul2011
MPC 39.16   MPC 15jul2011
MPC 39.12   MPC 18jul2011
MPC 39.74   MPC 19jul2011
MPC 39.53   MPC 20jul2011
MPC 40.1    MPC 21jul2011
MPC 40.57   MPC 22jul2011
MPC 41.37   MPC 25jul2011
MPC 43.05   MPC 26jul2011

这似乎微不足道,但我无法理解。

主要问题是我不知道如何描述或命名这种技术,因此我无法搜索它。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

这可以压缩。最后一个零位于

egen lastz = max(rdate / (close == 0)), by(id)

然后你可以

drop if date < lastz

你可以谷歌为我的文章“与......比较”在 Stata期刊中讨论这项技术。如果没有零,您将自动收到错误。

答案 1 :(得分:0)

我现在设法找到解决此问题的方法,使用以下“hack”。但是,我希望有一种更快,更清洁的方法。

* drop all obs before a close price of 0 if occuring *
sort ticker_id rdate
gen tagdate = rdate if close == 0
by ticker_id: egen lasttagdate = max(tagdate)
drop if rdate <= lasttagdate & !missing(lasttagdate)
drop tagdate lasttagdate