Study SAS

統計解析ソフトウェアSASについて学習したことのまとめやSAS認定試験対策など

infileのdsdオプション

infileステートメントdsd(Delimiter-Sensitive Data)オプションの使いどころについてまとめた。

1. 欠損値があるデータの読み込み

data temp;
    infile cards dlm=',';
    input a b c d;
    cards;
1,,3,4
    ;
run;

デフォルトオプションでは区切り文字が連続している部分は無視される。
そのため、上のコードでは変数に対してデータ数が足りず、オブザーベーションは作成されない。

data temp;
    infile cards dlm=',' dsd;
    input a b c d;
    cards;
1,,3,4
    ;
run;

dsdオプションを付けると区切り文字が連続している場合、欠損値があるとみなすため

OBS a b c d
1 1 . 3 4

と意図した通りにデータを読み込める。

2. 区切り文字が入っている文字列があるデータの読み込み

Excelcsvファイルを扱う場合、区切り文字のカンマを含む文字列データは'"'で括られる。そのようなファイルはデフォルトオプションで正しくデータが読み込めない

data temp;
    infile cards dlm=',' dsd;
	informat a b c $16.;
    input a $ b $ c $;
    cards;
"green, apple",orange,grape
    ;
run;

dsdオプションを付けると'"'で括られたデータを正しく扱うことができる。

csvファイルの読み込みには必ずdsdオプションをつけるようにするということで。