2016-03-27 15 views
0

が、私は彼らのすべての失われたデータを持っているすべてのグループを削除したいドロップグループのすべてのOBS条件が満たされた場合

clear 

input id var 

     1 .  
     1 0  
     1 0  
     1 .  
     2 .  
     2 .  
     2 .  
     2 .  
     3 1  
     3 .  
     3 . 
     3 0 
end 

(単純化のための時間のVARが含まれていませんでした)私は、次のパネルデータがあるとし私はgen todrop = var[_N]をやってみましたが、何らかの理由で、いくつかのグループのために、それは動作しません

 id var 

     1 .  
     1 0  
     1 0  
     1 .  
     3 1  
     3 .  
     3 . 
     3 0 

:グループは、つまり、私は私のデータは以下のようになりたいです。何かご意見は?私はsortを入力してid varと考えて、カスケードを置き換えましたが、これを行うにはより良い方法があると確信しています。一般的に

答えて

2

、あなたはすべての観測が適切なsort INGの後、各パネルの最初と最後の観測値をチェックすることで、同じ値を保持するかどうかを確認することができます。ここでも同じ原則が適用されます。ちょうどまた作品最初のものをチェックし、この場合、

clear 
set more off 

input id myvar 
     1 .  
     1 0  
     1 0  
     1 .  
     2 .  
     2 .  
     2 .  
     2 .  
     3 1  
     3 .  
     3 . 
     3 0 
end 

bysort id (myvar) : gen todrop = missing(myvar[1]) & missing(myvar[_N]) 

list, sepby(id) 

:私はmissing()機能を使用します。それが欠落している場合、他のすべてがあります。

help byを参照してください。このコードは使用するため `欠落こと

+1

注()'は欠損値の符号に関係なく、任意の数値変数のために働くであろう、そしてそれはまた、チェックので 'MYVAR [_N]'、それは数値だけでなく、文字列変数のために動作します変数。エレガント。 –

+0

@WilliamLisowskiは良い点を作っています。将来の読者は、文字列変数が数値変数に比べて逆順にソートすることに注意してください。昇順では、文字列の欠落値( '" "')が最初に来ます。 –

関連する問題