【SAS】文字列連結① 区切り文字を使う連結で、余計な空白にイライラしない【CATX関数】
例えば別々の変数に入った値「dog」「cat」「rabbit」「bird」「mouse」みたいなのを「/」で区切って「dog/cat/rabbit/bird/mouse」としてひとつの変数に入れたいとき、単純に連結演算子(||)だけを使うと余計な空白が入る。さらにもし連結する変数が多かったら書くのが大変になる。
CATX関数を使うと先頭と末尾の空白も削除されてコードの見た目もすっきりする。
/*元データ作成*/ data sample1; length animal1-animal5 $10. ; input animal1-animal5; datalines; dog cat rabbit bird mouse ; run;
/*文字列連結*/ data sample2; set sample1; length animal_all1 animal_all2 $100.; *連結演算子だけ使って連結; animal_all1=animal1||'/'||animal2||'/'||animal3||'/'||animal4||'/'||animal5; *CATX関数を使って連結; animal_all2=catx('/',of animal1-animal5); keep animal_all:; run;
- 結果比較
連結演算子の方は「dog」の後とかに余計な空白(長さ10を指定してる変数なので、その長さに足りない分空白入れてくれちゃってる)が入るけど、CATX関数の方は入ってない。