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ファイルを使った再現可能な方法を選択することが重要です。