首页 > 代码库 > 《SAS编程与数据挖掘商业案例》学习笔记之八
《SAS编程与数据挖掘商业案例》学习笔记之八
十:file语句
file中的option选项:
Dlm=
Dropover
Flowover
Dsd
Encoding=
Filename=
Filevar=
Lrecl=
Mod
Old
eg:
filename file ‘f:\data_model\book_data\chapt3\utf.txt‘;
data _null_;
set sashelp.class;
file file encoding=‘utf-8‘;
put name weight;
run;
file语句最简单的形式,输出两个变量到新的文件中
eg2:
filename files ‘f:\data_model\book_data\chapt3\filename.txt‘;
data a;
length temp $50;
file files filename=temp;
put ‘abc‘;
fname=temp;
run;
输出两个文件,一个是sas数据集a,一个是文件文件filename.txt
其中数据集a中只有fname一个字段,其值为filename对应的文件名
put语句后面的内容为输出文件的内容,所以数据filename.txt中只有abc,
eg:
data b;
length name $200;
input name;
name=‘f:\data_model\book_data\chapt3\‘||strip(_infile_)||‘.txt‘;
file anyname filevar=name ;
date=date();
n=name;
format date yymmdd10.;
do;
put ‘test‘ @;
put ‘,‘ @;
put date ;
end;
cards;
test_file1
test_file2
test_file3
;
run;
解读:通过filevar选项的控制同时输出多个外部文件,并把外部文件名输出给sas数据集
蓝色部分为数据集b 的内容,黄色部分中put语句后面的为三个文件输出的内容;
cards读入数据后,自动变量_infile_都会自动获取相应的值,第一条记录读取时,test_file1被传送到_infile_变量中,从而filevar变量的值为f:\data_model\book_data\chapt3\test_file1.txt,然后赋值给n
如果仅仅是读取某一目录下所有外部文件名到另一个文本文件下,只需要如下代码。
data _null_;
do i=1 to 3;
length name $200;
name=‘f:\data_model\book_data\chapt3\‘||‘test_file‘||put(i,1.)||‘.txt‘;
file anyname filevar=name ;
file ‘f:\data_model\book_data\chapt3\fname.txt‘;
put name;
end ;
run;
商业实战:
输出定长文本文件
data _null_;
date=date();
run;
集中输出方式:
列方式输出:在put语句后要紧跟列号,对字符型要加$,如put name $1-8
格式化方式输出:在put语句后要指明输出格式,输出格式同事指明数据类型和列宽度,最后要加一个句点结尾。
如put name
输出含有逗号不定长文本文件:
libname chapt3 ‘f:\data_model\book_data\chapt3‘;
data _null_;
run;
输出定长且含有逗号的文本文件
data _null_;
《SAS编程与数据挖掘商业案例》学习笔记之八