外部ファイルをいっぺんに読み込んで連結した時に、各オブザベーションの由来ファイルパスを取得する方法:infileステートメント+filename=

SAS忘備録の記事に乗っかったテクニックを一つ。

記事「外部ファイルをいっぺんに読み込んで連結する。」
http://sas-boubi.blogspot.jp/2014/06/blog-post.html

で複数のファイルを一括りにして、一気に読み込む方法が紹介されています。
これ、凄い便利です。

ただ、ちょっと困ったのが、データセットができあがった時に、このオブザベーションはどのファイルから読み込まれたものなんだろう?っていうのがわからないことでした。

そこで、Cドライブ下のsampleというフォルダ内にある全てのcsvファイルを読み込んで1つのデータセットにするコードを考えます。

今、TEST1.csvとTEST2.csvがフォルダ内にあって、以下の内容の場合










filename  FL  "C:\sample\*.csv" ;

data OUT1;
length FPATH $100.;
 infile  FL  dsd filename=FPATH;
 input A$ B$ C;
  X=FPATH;
run;

とすると、結果は







となって変数Xに、由来元のファイルのフルパスが表示されます。

気づかれた方も多いかもしれませんが、このfilename=の挙動は
indsname=オプションの挙動に酷似しています。

indsname=については
「indsname オプションで、由来元のデータセット名を取得する」
http://sas-tumesas.blogspot.jp/2013/10/indsname.html

「indsname定跡」
http://sas-tumesas.blogspot.jp/2014/02/indsname.html

などを参照ください


0 件のコメント:

コメントを投稿