``generate`` では新たな変数を作成することを学習しましたが、既存の変数を修正するコマンドもあります。``replace`` コマンドを用いることで既にある変数を変換できます。さらに実践編1で学習した ``if`` と組み合わせることで、柔軟にデータが編集できます。 まずシンプルに先ほど入力した ``person`` 変数の ``Yamada`` を全て ``Tanaka`` に変更しましょう。変数 ``person`` の内容をすべて文字列 ``Tanaka`` に変更する方法は次の通りです。 ```stata . replace person = "Tanaka" (14 real changes made) ``` コマンドの書き方が ``generate`` とよく似ていることに気づいたかも知れません。ただし、ここで ``replace`` のかわりに ``generate`` コマンドを使用すると「既に変数が定義されています」とエラーが出てしまいますので、既にある変数に変更を加えるときには ``replace`` コマンドを利用する必要があります。 実行した後に ``(14 real changes made)`` と表示されており、14個全ての変数に変更が加えられたことが分かります。 ``replace`` は数値にも同じように扱えます。いま変数 ``hyaku`` には ``100`` と入力されていますが、それを2倍にした数値に変更しましょう。次のように ``replace`` コマンドを用いることで実現できます。 ```stata . replace hyaku = hyaku * 2 (14 real changes made) ``` 既存の ``hyaku`` を ``hyaku * 2`` で置き換えるという命令になっています。Stata でいうイコールは、一般的な数学的なイコールとは異なり、右辺にある式を左辺にある変数に代入するという意味があります。実は Stata に限らずプログラミング言語といわれるものの多くはそのような仕様になっています。イメージとしては左向きの矢印(←)のような感じです。ここでは右辺にある ``hyaku * 2`` で計算した値を左辺にある ``hyaku`` という変数に代入しています。 ここまでの結果をデータエディタで確認すると次のようになります。 ![データエディタ](data_editor_10.png) ``person`` と ``hyaku`` は以後の練習で不要ですので、消去しましょう。``drop`` というコマンドで不要な列を消去することができます。コマンドの後に変数を並べることで一度に複数の変数を消去できます。 ```stata . drop hyaku person ``` ``hyaku`` と ``person`` が消去されたことを確認してください。 ![データエディタ](data_editor_11.png) つづいて ``if`` と組み合わせた変更を行います。変数 ``point`` には ``A`` と ``B`` が含まれていますが、Aが北海道で Bが東京であるとします。実践編1では ``if`` の条件設定を数値だけで学習しましたが、文字列も同じように扱うことができます。「``point`` が ``A`` であるとき」という条件は ``if point=="A"`` と表せますので、「``point`` が ``A`` であるとき」に「``point`` を ``Hokkaido`` に変換する」というコマンドは次のようになります。 ```stata . replace point = "Hokkaido" if point=="A" (7 real changes made) ``` 実行結果に ``(7 real changes made)`` と記載されています。変数全部を ``replace`` したときと違って、一部のみを ``replace`` していますので7個だけ変換されたことが報告されています。 ``B`` の ``Tokyo`` についても同様に変換してみましょう。 ```stata . replace point = "Tokyo" if point=="B" (7 real changes made) ``` 実行結果をデータエディタで確認しましょう。 ![データエディタ](data_editor_12.png)