2016-04-11 7 views
1

Stataがすべての人(Amanda、Christian、Paola)が食べる最小値ice_creamを選択するようにして、私はちょうど3行で終了します。Stata:各観測の最小値を選択してください

person ice_cream 
    Amanda 16 
    Amanda 27 
    Amanda 29 
    Amanda 40 
    Amanda 96 
    Amanda 97 
    Christian 19 
    Christian 23 
    Christian 26 
    Christian 27 
    Christian 28 
    Christian 34 
    Christian 62 
    Christian 70 
    Christian 78 
    Paola 5 
    Paola 11 
    Paola 28 
    Paola 97 
+0

それは親切明らかですあなたが望むものだが厳密には観測のブロックを最小限にしたい、Stataは観測がデータセット内の単一の行またはレコードである。 –

答えて

3

を新しい変数を作成避け答え:

sort person ice_cream 
by person: keep if _n == 1 
+0

人によって:keep if _n == 1'は基本的に「各人の最初の観察を維持する」という意味ですか? – pdx

+1

はい、@lmoが最初にソートされていますので、あなたが望むように最小値を選択します。 –

+2

@pdesp '_n'メソッドは非常に便利で、多くのデータクリーニング/操作シナリオに適用できます。 – lmo

2

これは動作するはずです:

* Generate a variable with the group minimums  
sort person 
by person: egen Min = min(ice_cream) 
* Only keep observations with same value as group minimums 
keep if Min == ice_cream 
* Delete minimum variable 
drop Min 

注:これをice_creamの最小値でのみ観測を残します。あるグループ内の複数の観測値がice_creamの最小値を持つ場合、そのグループについて複数の観測値を持つことになります(これは上記のデータにはありませんが、例えばice_creamが因子変数であった可能性があります)。あなたはグループごとにユニークな観測を望んでいた場合は、その後、追加することができます。

duplicates drop person, force 
+0

最小限の結束がある場合、これは要件を満たすことができません。その場合、必要以上に多くの観測を選択します。 –

+0

@NickCox、そうです。私はメモを追加しました。 – Stuart

+2

最低値の結び付きは、計測値や計測変数でさえ非常に共通しています。 –

3

1行のソリューション

collapse (min) ice_cream, by(person) 
関連する問題