動かして覚える infileステートメント filevar オプション ~複数ファイルをヘッダを飛ばして一括で読み込む~ - SAS
複数のファイルを dataステップ1回で読み込もうとしたとき、それぞれのファイルに読み込ませたくないヘッダーがあると、firstobs オプションを使ってもヘッダを飛ばせず上手く読み込まれません。しかし、filevar オプションを使ってみたところ、上手く全てのヘッダを飛ばして読み込ませることができたので、その方法と filevar オプションについてご紹介します。 (※ filevar オプションではなく、eov オプションを用いた解決方法が、データステップ100万回 SAS新手一生 の記事「 filenameで複数ファイルを一括指定して、読み込む場合に各ファイル1行目がラベル行だと、難しいことになるがeovをうまく使えば解決できる話 」にて、ご紹介されていますので、こちらもご参考ください。) (※ filevar オプションによる解決方法は、コーディングミスによる無限ループの危険性があるから、ヘッダを飛ばすだけなら、eov オプションの方が良いかもしれません。) サンプルに用意した入力ファイルは、以下のようなファイルです。 格納場所 : /folders/myfolders/filevar/ 文字コード : Shift-JIS 改行コード : CRLF 区切り文字 : , (カンマ) なにも考えずに読み込むと、以下みたいに、ヘッダが残ってしまいます。 filename IN "/folders/myfolders/filevar/test?.txt" ; data TEST ; infile IN dlm=',' dsd missover lrecl=1048576 encoding="sjis" termstr=CRLF ; input V1 : $CHAR10. V2 : 8. V3 : $CHAR60. ; run ; filename のファイル名に指定している ? は1文字にマッチするワイルドカードです。 encoding オプション 入力ファイルの文字コードを指定する。 termstr オプション 入力ファイルの改行コードを指定する。 inf...