2017年5月11日木曜日

My Favorite SAS Functions (2) CATX関数



第2回目は、CATX関数。
この関数は「文字列同士を区切り記号付きで連結する」という機能を持っています。


構文

  CATX( "区切り文字" , 変数1, 変数2, ・・・ )


  • 変数値の先頭か末尾に半角スペースがある場合は、それらを削除してから結合する
  • 文字変数が欠損値の場合は、その変数はスキップされる (区切り文字もつかない)

基本的な構文や機能は以下記事で紹介済みなので、そちらをご覧ください。
http://sas-boubi.blogspot.jp/2015/11/catx.html





例えば、以下X1~X4までの変数値を連結してYのような文字列を作りたいとします。

  X1  
  X2  
  X3  
  X4  
   
  aa      bb  cc  aa,bb,cc 


今までは、以下Beforeのようなメンドクサイ書き方をする必要ありました。あー面倒だなーって言いながら書いてました。
それがAfterのようにCATX関数を使えば超スッキリと短い文で書けてしまいます。

Before
  length Y $20.;
  array AR(*) X1-X4;
  do i=1 to dim(AR);
     if AR(i)^="" then do;
        if Y = "" then Y=left(AR(i));
        else Y = trim(left(Y)) || "," || trim(left(AR(i)));
     end;
  end;


After
  length Y $20.;
  Y = catx( "," ,X1,X2,X3,X4 );


今でこそ当たり前につかってますが、知ったときは感動しました。



記事一覧

1.CATS関数
2.CATX関数

0 件のコメント:

コメントを投稿