Stataにおける文字列置換の実例として、日本語の名前データを使った処理を紹介します。 ## サンプルデータの準備 まず、日本語の名前データを含むサンプルデータを作成します。 ```stata clear all input id str20 name 123 "山田 太郎" 124 "田中 花子" 125 "山田 大地" end list ``` このデータには、姓名の間に半角スペースまたは全角スペースが含まれています。データを確認すると、以下のような内容が表示されます: ``` +------------------+ | id name | |------------------| 1. | 123 山田 太郎 | 2. | 124 田中 花子 | 3. | 125 山田 大地 | +------------------+ ``` ## 正規表現を使った文字列置換 次に、`ustrregexra`関数を使って、名前の間のスペースをアンダースコアに置き換えます。 ```stata generate new_name = ustrregexra(name, "[\s ]", "_") ``` ### コードの詳細解説 `ustrregexra`関数の構文は以下の通りです: - 第1引数:対象となる文字列変数(name) - 第2引数:検索する正規表現パターン("[\s ]") - 第3引数:置換後の文字列("_") 正規表現パターン `[\s ]` の意味: - `\s`:半角スペース、タブ、改行などの空白文字 -  :全角スペース - `[ ]`:角括弧内のいずれかの文字にマッチ ## 実行結果 この処理により、以下のような結果が得られます: ``` +---------------------------+ | id name new_name | |---------------------------| 1. | 123 山田 太郎 山田_太郎 | 2. | 124 田中 花子 田中_花子 | 3. | 125 山田 大地 山田_大地 | +---------------------------+ ``` ## 活用場面 この種の文字列置換は、以下のような場面で有用です: **データクリーニング**: 入力時の表記揺れ(半角・全角スペースの混在)を統一する際に役立ちます。 **ファイル名の生成**: 名前データからファイル名を生成する際、スペースをアンダースコアに置き換えることで、システムに適合した形式に変換できます。 **データベースとの連携**: 外部システムとのデータ連携において、特定の文字を別の文字に統一する必要がある場合に活用できます。 ## 補足:その他の置換方法 Stataには他にも文字列置換の関数があります: `subinstr`関数は文字通りの文字列置換に使用し、`ustrregexra`は正規表現による柔軟なパターンマッチングが可能です。日本語を含む文字列を扱う際は、Unicode対応の`ustrregexra`を使用することが推奨されます。