ここまでで、データを取り込むという操作を行いました。このあとは、基礎編で学習したことの発展を行っていきたいと思います。そのまえに、これまでは ``Command`` という部分にコマンドを一行ずつ打ち込んでいました。それでも悪くはないのですが、「今日はここまでにして、続きはあしたやろう」とか、「この作業だけを変更して、最初からやり直そう」といったときには毎回同じ作業を行う必要があります。それは不便ですし、間違いの元になることは容易に想像がつきます。 そこで登場するのが **Doファイル**です。Doファイルはプログラムの手順を記したファイルで、これを用いることで「データを取り込んで、解析を行って、グラフを出力する」といった一連の動作を一度に実行することができます。 まずは、Doファイルを開くところからやってみましょう。メニューから [File]>[New]>[Do-File] を選択して、新しい Doファイルを作成しましょう。下のようなウィンドウが表示されると思います。 ![Doファイルエディタ](dofile_01.png) この中にコマンド(プログラム)を記載して動かすことができます。 簡単なプログラムを記載してみましょう。次のように記載して、実行してみます。 disp "Hello" 下の図に矢印で示した実行ボタンをクリックすることで実行されます。 ![Doファイルエディタ](dofile_02.png) メインウィンドウには次のように表示されると思います。 . do "/var/folders/l0/mp4dm0y577j5ly5q1sx3bzp40000gn/T//SD19973.000000" . disp "Hello" Hello 一番上の行で ``. do "...`` と表示されているので「ここでは Doファイルが実行されているな」ということが分かります。そのあと ``. disp "Hello"`` でコマンドが実行されています。 ``disp`` コマンドについては説明していませんでしたが、ここでは文字列 ``"Hello"`` を表示 (display) するコマンドだと簡単に理解してください。詳細について知りたい方は ``. help disp`` を実行してヘルプを検索してみましょう。 さて、コマンドを実行した結果、 ``Hello`` が表示されています。これで Doファイルに記した内容が実行されたことがわかります。 このことを先ほど実行した、Excelファイルを取り込むことに実践してみましょう。メインウィンドウを見てみると、Excel ファイルを取り込んだときのコマンドが次のように記されています。 . import excel "/Users/(ユーザー名)/Desktop/test.xlsx", sheet("Sheet1") firstrow clear 私たちはメニューから実行しましたが、Stata ではそれを Stata のコマンドに変換してくれて、記録としてのこしてくれています。これを利用することで、同じファイルを取り込む操作を Doファイルへ書くことができます。上記のファイルを Doファイルエディタにコピー&ペーストしてみてください。 ``disp "Hello"`` は不要なので消しましょう。 貼り付けると次のようになります。 ![Doファイルエディタ](dofile_03.png) `. import` の最初のドット(``. ``)は不要なので消しました。 Doファイルの中身は次のようになります。 import excel "(ファイルの場所)/test.xlsx", sheet("Sheet1") firstrow clear ``(ファイルの場所)`` のところは人によって異なると思います。 この Doファイルのコマンドを解読すると次のことが分かります。 * ``import`` というコマンドを使っている。 * ``import excel`` とすることでエクセルを取り込むことができる。 * ``import excel`` の後にはファイルの場所を記す必要がある。 * カンマ (``, ``) 以下はオプションが記されている。 * オプション ``sheet("Sheet1")`` を指定することで ``Sheet1`` という名前のシートを取り込むことができる。 * オプション ``firstrow`` を指定することで、各列のはじめの文字を変数名として指定することができる。 * オプション ``clear`` を指定することで、取り込み時に他のファイルを開いていても、それを消去して開くことができる。 もし、何もファイルを開いていない状態でメニューから Excelファイルを取り込んだ場合は ``clear`` オプションが書かれていないかも知れません。その場合は、手書きで書き込むか、別途 ``clear`` コマンドを別の行に記載する必要があります。 その方法を次の節でみてみましょう。