動かして覚え...なくてもいいかもしれない infileステートメント expandtabs オプション - SAS

infile ステートメントの中に expandtabs オプションというのを見つけました。名前からして、もしかしたら dlm="09"x の別名か!? これでタブ区切りのファイルを読み込むときに、タブ "09"x なんていう知らないと分からないコードを書かなくて済む! と思ったのですが、使ってみたら思ってた挙動と違っていました。

下記のようなコードでは思ってたとおりに動作します。

テストコード

filename IN "/folders/myfolders/test.txt" ;
data TEST ;
  infile IN expandtabs ;
  input var1 : $16. var2 : $16. ;
run ;
proc print ; run ;

テストデータ1

※空白はタブです。

1234567890 1234
1111 2222
A B

テスト結果1

 OBS    var1          var2
 1     1234567890    1234
 2     1111          2222
 3     A             B   

expandtabsオプションは、タブを空白に置き換えるらしく、半角スペースを値として格納している場合には上手く読み込みません。

テストデータ2

※11と11の間に半角スペースを入れました。

1234567890 1234
11 11 2222
A B

テスト結果2

OBS    var1          var2
 1     1234567890    1234
 2     11            11  
 3     A             B   

タブではなく、半角スペース区切り(dlm=を指定しないときのデフォルト値)で読み込まれてしまいます。

調べてはみましたが、使いドコロが(個人的には)なさそうなオプションでした。

コメント

このブログの人気の投稿

日付フォーマットでない文字項目をSAS日付に変換するときにログ出力されるメッセージを抑制したい - SAS

データセット(.sas7bdatファイル)の文字コードを取得したい - SAS

Linuxコマンド: date で◯か月前 / ◯か月後を取得するときの注意