さて、もう少し ``list`` で遊びながら、Stata で重要な ``if`` について、ここで学習してしまいましょう。
例えばデータの中で身長が 180 cm より大きい人だけを表示する方法は次の通りです。
. list if height > 180
+-----------------------------+
| id male height weight |
|-----------------------------|
1. | 1 1 192.4 74 |
2. | 3 1 180.6 72.7 |
3. | 4 1 183.1 74.1 |
4. | 5 1 199.2 88 |
+-----------------------------+
ちゃんと狙った人が表示されているのが分かりますね。 ``if height >180`` を付け加えることで ``list`` で書き出す症例の条件付けが行われたことが分かります。``if`` はオプションではありませんので、カンマ(``, ``) は必要ないことに注意しtけうださい。
180 cm より大きくて、190 cm より小さい人を表示する方法は次の通りです。
. list if height > 180 & height < 190
+-----------------------------+
| id male height weight |
|-----------------------------|
3. | 3 1 180.6 72.7 |
4. | 4 1 183.1 74.1 |
+-----------------------------+
``&`` を加えることで条件を付け加えることができます。``&`` は「**かつ**」の意味があります。
注意が必要なのは、次のような ``if`` はエラーになるということです。
. list if height > 180 & < 190
<190 invalid name
r(198);
``if`` の場合は ``if (条件)&(条件)`` となる必要があり、``(条件)`` の部分はそれぞれ条件式として成立している必要があります。複雑になって分かりにくくなる場合は、 ``if (height > 180) & (height < 190)`` のように括弧に囲んで実行すると分かりやすいと思います。
「かつ」がでたら、当然「**または**」が知りたくなると思います。「または」は縦線 (``|``) で示します。例えば、身長が 190 cm 以上あるいは 150 cm 未満のひとを表示してみましょう。
. list if height > 190 | height < 150
+-----------------------------+
| id male height weight |
|-----------------------------|
1. | 1 1 192.4 74 |
2. | 5 1 199.2 88 |
13. 17 0 140.1 40.3 |
+-----------------------------+
縦線の表示の仕方は、``Shift``キー押しながら ``¥`` が書かれているキーを押せば入力されると思います。結果を見てみると、うまく目的の条件の人が表示されていることがわかります。
さらに女性だけのデータを表示する条件を加えるには次のようにします。
. list if (height > 190 | height < 150) & male==0
+-----------------------------+
| id male height weight |
|-----------------------------|
17. | 17 0 140.1 40.3 |
+-----------------------------+
この場合、括弧を使わないと想定した結果になりません。
. list if height > 190 | height < 150 & male==0
+-----------------------------+
| id male height weight |
|-----------------------------|
1. | 1 1 192.4 74 |
2. | 5 1 199.2 88 |
13. 17 0 140.1 40.3 |
+-----------------------------+
この場合 ``if height > 190 | (height < 150 & male==0)`` とした結果が実行されています。``&`` は ``|`` よりも先に解釈されるようです。意図しない結果がでないようにするために、複雑な条件設定をする場合には括弧で囲む習慣をつけるようにしましょう。
``if`` での条件設定についての詳細を知りたい場合は、``help if`` を表示してみてください。