## 欠損値を扱ってみる Stata では `.` (ドット)として欠損値を取り扱います。 まず以下のサンプルデータで確認してみましょう。 ```Stata * 今あるデータは消えるので注意してください clear all cls input x 10 20 . 40 50 999 70 end list ``` このような結果になります。 ```Stata . list +-----+ | x | |-----| 1. | 10 | 2. | 20 | 3. | . | 4. | 40 | 5. | 50 | |-----| 6. | 999 | 7. | 70 | +-----+ ``` たとえば `x` が `50` の行について欠損値に置き換えたいときはこのようにします。 ``` Stata replace x = . if x==50 sum x ``` 結果はこのようになります。 ```Stata . replace x = . if x==50 (1 real change made, 1 to missing) . . sum x Variable | Obs Mean Std. dev. Min Max -------------+--------------------------------------------------------- x | 5 227.8 431.7224 10 999 ``` さて、 `999` と書かれた行の結果、平均値が非常に高くなりました。この値は本当の値ではなく欠損値として扱ってほしいために入力した値です。そのため、`999` も以下のように変換しましょう。 ```Stata replace x = . if x==999 sum x ``` 結果は以下の通りです。正しい平均値が表示されました。 ```Stata . replace x = . if x==999 (1 real change made, 1 to missing) . . sum x Variable | Obs Mean Std. dev. Min Max -------------+--------------------------------------------------------- x | 4 35 26.45751 10 70 ``` ## 欠損値は非常に大きな数字です なお、欠損値は Stata が扱える数字の中で最も大きな数字になります。 たとえば以下のようなコードを続けて実行します。 ```Stata list replace x = 300 if x > 100 list ``` するとこのような結果になります。 ```Stata . list +----+ | x | |----| 1. | 10 | 2. | 20 | 3. | . | 4. | 40 | 5. | . | |----| 6. | . | 7. | 70 | +----+ . replace x = 300 if x > 100 (3 real changes made) . list +-----+ | x | |-----| 1. | 10 | 2. | 20 | 3. | 300 | 4. | 40 | 5. | 300 | |-----| 6. | 300 | 7. | 70 | +-----+ ```