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`を使用することが推奨されます。