テキストファイルをデータステップで読み込む例です。
読込むCSVファイル … C:\test\sample1.csv
あああ,10,2012/1/1,10:01
,11,, ううう,12,2015/1/1, |
CSVファイルの読み込み
data OUT1;
attrib
A length=$20.
B length=8.
C length=8. informat=yymmdd10. format=yymmdds10.
D length=8. informat=time5. format=time5.
;
infile "C:\test\sample1.csv" dlm="," dsd truncover lrecl=30000 firstobs=1;
input A B C D;
run;
|
attrib
A length=$20. B length=8. C length=8. informat=yymmdd10. format=yymmdds10. D length=8. informat=time5. format=time5. ; |
① 読み込んだときの変数属性(lengthやformatなど)を定義しておく。
テキストファイルのデータをSAS日付値や時間値などに変換して読み込む必要がある場合は、別途 informat も定義。
infile "C:\test\sample1.csv" dlm="," dsd truncover lrecl=30000 firstobs=1;
|
② 読み込むファイルのフルパスを指定します。また以下の細かい設定もしていきます。
dlm=","
テキストファイルの区切り文字をカンマ「,」に設定。各自該当する区切り文字を設定する。
lrecl=30000
1行に読み込める長さを最大30000バイトに設定している。
この長さが足りないと、途中で文字が切れてしまう事があるので、読み込むデータの長さに応じて設定する。
テキストファイルの何行目から読み込みを開始するか指定。
例えば、テキストファイルの1行目に項目名、2行目にデータが入っている場合は、「firstobs=2」とします。
input A B C D;
|
③ テキストファイルから読み込んだ値に対して、割り当てる変数を列挙
「うまく読み込めない」という場合によくあるパターンとして、
EXCEL等でセル内改行が入ってるデータをCSV形式で保存して、それをSASに読み込むという場合。
セル内改行の部分はSAS上でうまく読み込めず、読込む位置がずれてしまう事があります。
また、以下のようなテキストファイルがあったとして、
., xxx |
カンマで区切られた1つ目のデータ「.」は特別な指定をしない限り欠損値の意味として読み込まれます。
カンマで区切られた2つ目のデータ「 xxx」は特別な指定をしない限り前方の半角スペースが取り除かれて「xxx」として読み込まれます。
0 件のコメント:
コメントを投稿