Stataでデータ解析を行う際、データの内容を確認し、必要な部分だけを抽出して表示することは重要な作業です。`edit`コマンドは、データを視覚的に確認し、直接編集することができる便利なツールです。 この記事では、Stataの`edit`コマンドを使って、データの抽出と表示の方法について段階的に学習していきます。 ## `edit`コマンドとは `edit`コマンドは、Stataのデータエディタを開き、データセットを表形式で表示・編集するためのコマンドです。Excelのような感覚でデータを確認・修正できます。 また、StataのGUIインターフェース上部にある「Data Editor」アイコン(赤い矢印で示されている部分)をクリックすることでも、`edit`コマンドと同じデータエディタを開くことができます: ![[Pasted image 20250905093201.png]] ### 基本的な使用法 ```stata edit ``` このコマンドだけで、現在メモリ上にあるデータセット全体をデータエディタで開きます。GUIのアイコンをクリックした場合も同じ結果が得られます。 ## データの準備 この記事では、Stataに標準で付属している自動車データ(`auto`データセット)を使用します。このデータセットには1978年の自動車74台の情報が含まれており、`edit`コマンドの練習に最適です。 ```stata * 標準の自動車データを読み込み sysuse auto, clear * データの概要を確認 describe ``` このデータセットには以下の変数が含まれています: - `make`: 車種名 - `price`: 価格(ドル) - `mpg`: 燃費(マイル/ガロン) - `rep78`: 1978年の修理記録 - `weight`: 車重(ポンド) - `foreign`: 車の出身国(0:国産、1:外国車) - その他の車両仕様 ## 基本的な`edit`コマンドの使用 ### 全データの表示 ```stata * データエディタでデータセット全体を表示 edit ``` このコマンドを実行すると、データエディタウィンドウが開き、表形式でデータが表示されます。 データエディタの代わりに`list`コマンドを使用すれば、コマンドライン上で同様の内容を確認できます: ```stata * 最初の10件を表示 list in 1/10 ``` 実行結果: ``` +------------------------------------------------------------------+ 1. | make | price | mpg | rep78 | headroom | trunk | weight | | AMC Concord | 4,099 | 22 | 3 | 2.5 | 11 | 2,930 | |------------------------------------------------------------------| | length | turn | displa~t | gear_r~o | foreign | | 186 | 40 | 121 | 3.58 | Domestic | +------------------------------------------------------------------+ +------------------------------------------------------------------+ 2. | make | price | mpg | rep78 | headroom | trunk | weight | | AMC Pacer | 4,749 | 17 | 3 | 3.0 | 11 | 3,350 | |------------------------------------------------------------------| | length | turn | displa~t | gear_r~o | foreign | | 173 | 40 | 258 | 2.53 | Domestic | +------------------------------------------------------------------+ +------------------------------------------------------------------+ 3. | make | price | mpg | rep78 | headroom | trunk | weight | | AMC Spirit | 3,799 | 22 | . | 3.0 | 12 | 2,640 | |------------------------------------------------------------------| | length | turn | displa~t | gear_r~o | foreign | | 168 | 35 | 121 | 3.08 | Domestic | +------------------------------------------------------------------+ ``` ### 特定の変数のみを表示 特定の変数だけを表示したい場合は、変数名を指定します: ```stata * 車種と価格のみを表示 edit make price * 車種、価格、燃費のみを表示 edit make price mpg ``` `list`コマンドでの表示例: ```stata * 車種と価格のみを表示 list make price in 1/10 ``` 実行結果: ``` +------------------------+ | make price | |------------------------| 1. | AMC Concord 4,099 | 2. | AMC Pacer 4,749 | 3. | AMC Spirit 3,799 | 4. | Buick Century 4,816 | 5. | Buick Electra 7,827 | |------------------------| 6. | Buick LeSabre 5,788 | 7. | Buick Opel 4,453 | 8. | Buick Regal 5,189 | 9. | Buick Riviera 10,372 | 10. | Buick Skylark 4,082 | +------------------------+ ``` ### 特定の観測値のみを表示 条件を指定して特定の観測値だけを表示できます: ```stata * 価格が10,000ドル以上の車のみを表示 edit if price >= 10000 * 外国車のみを表示 edit if foreign == 1 * 外国車で燃費が良い車を表示 edit if foreign == 1 & mpg >= 25 ``` 実行例と結果: ```stata * 価格が10,000ドル以上の車のみを表示 list make price mpg if price >= 10000 ``` 実行結果: ``` +----------------------------------+ | make price mpg | |----------------------------------| 9. | Buick Riviera 10,372 16 | 11. | Cad. Deville 11,385 14 | 12. | Cad. Eldorado 14,500 14 | 13. | Cad. Seville 15,906 21 | 26. | Linc. Continental 11,497 12 | |----------------------------------| 27. | Linc. Mark V 13,594 12 | 28. | Linc. Versailles 13,466 14 | 41. | Olds Toronado 10,371 16 | 64. | Peugeot 604 12,990 14 | 74. | Volvo 260 11,995 17 | +----------------------------------+ ``` ```stata * 外国車のみを表示(一部のみ抜粋) list make price mpg foreign if foreign == 1 ``` 実行結果(最初の10件): ``` +-----------------------------------------+ | make price mpg foreign | |-----------------------------------------| 53. | Audi 5000 9,690 17 Foreign | 54. | Audi Fox 6,295 23 Foreign | 55. | BMW 320i 9,735 25 Foreign | 56. | Datsun 200 6,229 23 Foreign | 57. | Datsun 210 4,589 35 Foreign | |-----------------------------------------| 58. | Datsun 510 5,079 24 Foreign | 59. | Datsun 810 8,129 21 Foreign | 60. | Fiat Strada 4,296 21 Foreign | 61. | Honda Accord 5,799 25 Foreign | 62. | Honda Civic 4,499 28 Foreign | +-----------------------------------------+ ``` ## 高度な抽出・表示テクニック ### 範囲を指定した表示 観測値の範囲を指定してデータを表示できます: ```stata * 最初の10件のみを表示 edit in 1/10 * 51件目から100件目を表示 edit in 51/100 * 最後の10件を表示 edit in -10/-1 ``` ### 複合条件による表示 複数の条件を組み合わせてデータを抽出できます: ```stata * 燃費が25mpg以上の車を表示 edit make price mpg if mpg >= 25 * 重量が4,000ポンド以上の車を表示 edit make price weight if weight >= 4000 ``` 実行例: ```stata * 燃費が25mpg以上の車を表示 list make price mpg if mpg >= 25 ``` 実行結果: ``` +------------------------------+ | make price mpg | |------------------------------| 7. | Buick Opel 4,453 26 | 14. | Chev. Chevette 3,299 29 | 20. | Dodge Colt 3,984 30 | 24. | Ford Fiesta 4,389 28 | 42. | Plym. Arrow 4,647 28 | |------------------------------| 43. | Plym. Champ 4,425 34 | 44. | Plym. Horizon 4,482 25 | 45. | Plym. Sapporo 6,486 26 | 55. | BMW 320i 9,735 25 | 57. | Datsun 210 4,589 35 | |------------------------------| 61. | Honda Accord 5,799 25 | 62. | Honda Civic 4,499 28 | 63. | Mazda GLC 3,995 30 | 65. | Renault Le Car 3,895 26 | 66. | Subaru 3,798 35 | |------------------------------| 68. | Toyota Corolla 3,748 31 | 71. | VW Diesel 5,397 41 | 72. | VW Rabbit 4,697 25 | 73. | VW Scirocco 6,850 25 | +------------------------------+ ``` ### ソート機能の活用 データエディタ内でデータを並べ替えて表示できます: ```stata * 年齢順にソートしてから表示 gsort age edit * 収縮期血圧の降順でソートしてから表示 gsort -sbp edit sbp dbp hypertension ``` ## データエディタでの確認作業 ### 異常値の確認 ```stata * BMIの異常値を確認 edit id age bmi if bmi < 15 | bmi > 35 * 血圧の異常値を確認 edit id sbp dbp if sbp < 80 | sbp > 200 | dbp < 40 | dbp > 120 ``` ### 欠損値の確認 ```stata * 欠損値があるケースを表示 edit if missing(age) | missing(bmi) | missing(sbp) | missing(dbp) ``` ## 実用的な活用例 ### 症例レポート用のデータ抽出 特定の患者の詳細情報を確認したい場合: ```stata * 患者ID 15の情報を表示 edit if id == 15 * 特に興味深い症例(若年高血圧)を抽出 edit id age gender bmi sbp dbp if age < 40 & hypertension == 1 ``` ### データ品質の確認 データの整合性を確認する際に有効です: ```stata * 性別とBMIの関係を確認 edit gender bmi if bmi > 30 * 年齢と血圧の関係を確認 edit age sbp dbp hypertension ``` ## 注意点と制限事項 ### データエディタ使用時の注意点 1. **データの直接編集**: データエディタ内で値を直接変更できますが、変更は元に戻せないため注意が必要です 2. **大きなデータセット**: 非常に大きなデータセットの場合、表示に時間がかかることがあります 3. **変更の記録**: データエディタでの変更はdoファイルに記録されないため、再現性の観点から推奨されません ### ベストプラクティス ```stata * データエディタは確認のみに使用し、実際の変更はdoファイルで行う * 大きなデータセットの場合は条件を指定して表示範囲を限定する * 変数名やラベルを適切に設定してから表示する ``` ## 完全動作コード 以下は、この記事で説明した全ての操作を実行できるコードです: ```stata * ==================================== * Stata - データを抽出して表示する edit:完全版 * ==================================== * 1. データの準備 clear set obs 100 set seed 12345 gen id = _n gen age = int(runiform() * 61) + 20 gen gender = rbinomial(1, 0.5) gen bmi = rnormal(23, 3) gen sbp = rnormal(120, 15) gen dbp = rnormal(80, 10) gen hypertension = (sbp >= 140 | dbp >= 90) * ラベル設定 label variable id "患者ID" label variable age "年齢" label variable gender "性別" label variable bmi "BMI" label variable sbp "収縮期血圧" label variable dbp "拡張期血圧" label variable hypertension "高血圧" label define gender_lb 0 "女性" 1 "男性" label values gender gender_lb label define hyper_lb 0 "正常" 1 "高血圧" label values hypertension hyper_lb * 2. 基本的な表示コマンド例 display "=== 基本的な edit コマンドの例 ===" * 全データの確認(コメントアウト - 実際の使用時は edit を実行) * edit * 特定変数のみ(コメントアウト - 実際の使用時は edit を実行) * edit age gender bmi * 条件付き表示(コメントアウト - 実際の使用時は edit を実行) * edit if age >= 60 * edit if hypertension == 1 * edit if gender == 0 & hypertension == 1 * 3. データ確認のためのブラウズ(edit の代替) browse in 1/10 browse age gender bmi if age >= 60 browse id sbp dbp if hypertension == 1 * 4. 統計サマリーでデータ品質確認 summarize age bmi sbp dbp tabulate gender hypertension display "editコマンドの使用法を学習しました" ``` `edit`コマンドは、データの内容を素早く確認し、問題のある値や興味深いケースを特定するのに非常に有効なツールです。ただし、データの恒久的な変更には慎重になり、可能な限りdoファイルを使った再現可能な方法を選択することが重要です。