スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SAS:Split関数もどき

SASで、VBAのSPLIT関数みたいなものを使いたく、SASのヘルプに聞いてみたが、存在しない模様。
その代わり、SCAN関数というものを教えてもらった。
これを使えばSPLIT関数に近いことができる。

SPLIT関数は、区切り文字で文字列を分解することに使える。

SCAN関数: 文字列から区切り文字を指定し、番号順に取り出す
書式: SCAN(,<何個目?>,"<区切り文字>")
--

*----------------------------------------------*
*-- 以下サンプルプログラム --------------------*
*----------------------------------------------*


%let keys = var1 var2 varX ;

/*-- マクロ変数へ出力 --------------*/
data _NULL_ ;
length ccc $1000. ccc2 $1000.;
ccc = "&keys." ;
do i=1 to length(ccc) ;
ccc2 = scan(ccc,i," ");
if ccc2="" then stop ;

n+1;
call symput("varn", compress(put(n,best.))) ;
call symput("var" || compress(put(i,best.)), compress(ccc2)) ;
end ;
run;
*-- チェック・・・マクロ変数をプット --*;
%macro chk;
%do i=1 %to &varn. ;
%put ***&&var&i..***;
%end ;
%mend ;
%chk ;


/*-- データセットへ出力 --------------*/
data tbl ;
length ccc $1000. ccc2 $1000.;
ccc = "&keys." ;
do i=1 to length(ccc) ;
ccc2 = scan(ccc,i," ");
if ccc2="" then stop ;
output ;
end ;

keep ccc2 ;
run;
proc print data=tbl;
run;
スポンサーサイト

トラックバック

コメント

コメントを残す

Secret



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。