1

Stata を使用して、特定の基準が満たされた場合、現在の観測より前のすべての観測を削除したいと考えています。

close正確には、このサンプルでは、​​オブザベーションの前に表示されるすべてのオブザベーションをof で削除したいと思い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

これは些細なことのようですが、私はそれを理解することができません。

主な問題は、この手法を説明または命名する方法がわからないため、検索できないことです。

どうすればこれを達成できますか?

4

2 に答える 2

3

これは圧縮できます。最後のゼロは

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

その後、次のことができます

drop if date < lastz

この手法の議論については、 Stata Journalの私の記事「Company with...」を Google で検索できます。ゼロがない場合は、自動的に欠損値が取得されます。

于 2013-03-30T06:32:01.073 に答える
0

次の「ハック」を使用して、この問題の回避策を見つけることができました。ただし、これを行うためのより高速でクリーンな方法をいただければ幸いです。

* 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
于 2013-03-30T00:40:45.707 に答える