以下のデータセットがあったとして、、
data DT1; length VAR1 $20.; VAR1="abcde"; run; |
変数「VAR1」の2~3バイト目を「XX」に置換したいとする。
だしたい結果は「aXXde」
「translate」とか「tranwrd」を思い浮かべるけど、以下みたいにも書ける。
data DT2; set DT1; substr(VAR1,2,2)="XX"; run; |
substr関数の意外に知られてない書き方だと思う。ただし、
- 2バイトを3バイトの文字に置換、みたいな異なる長さへの置換は出来ない。
- 失敗例1: substr(VAR1,2,2)="XXX" → "aXXde"
- 失敗例2: substr(VAR1,2,2)="X" → "aX de"
- シングルバイト専用の関数のため、日本語などのマルチバイトは未対応。
- 変数を上書きする(今回の例ではVAR1の変数値を置換した結果がVAR1に格納される)のでご注意下さい。
0 件のコメント:
コメントを投稿