今天给大家Share的是关于CSV导入SAS、以及filename获取文件夹名称、文件名称 ----Setup~
Import .CSV to SAS
CSV导入到SAS中,如何自动把第一列的内容做为变量的标签呢,达到Excel的Import的效果。接下来我看我给大家Share一个简单的CSV2SAS的Macro程序...假如大家有更好方法,欢迎留言私信指点。。
%macro csv2sas(path,csvname,outds);
proc import out= &outds
datafile= "&path.&csvname."
dbms=csv replace;
getnames=No;/*是否获取变量名称*/
datarow=1; /*从第一行记录开始读取*/
guessingrows=500;/*读入前500行 避免读入时候找出数据截断 如数据量大时可以设置大一些,但影响运行速度*/
run;
data _tem1;
set &outds.;
if _N_=1;
proc transpose data=_tem1 out=_tem2 prefix=TYP;
by notsorted ;
var _all_;
run;
data _tem2;
set _tem2;
if missing(TYP1) then delete;
TYP1=tranwrd(TYP1,'"',"'");
_label=catx("=",_NAME_,compress('"'||TYP1||'"'));
run;
proc sql noprint;
select _label into:_label separated by " " from _tem2 ;
quit;
data &outds.;
set &outds.;
if _N_>1;
label &_label.;
run;
proc delete data=_tem1 _tem2 ;quit;
%mend;
%csv2sas(path=E:Sta_pgmCSV,csvname=m_stu_one.CSV,outds=TABLE)
效果如下
filename获取文件list
获取文件名以及文件夹list的用途?
当有大量外部文件需要导入到SAS中,我们如果一个文件一个文件的输入文件名导入SAS是一件很没劲的重复的无趣的事情...而且也可能出错...利用SAS语言可以直接在SAS中获取文件名称到数据集中,在通过赋值给Macro Var的方式与do loop结合起来,可以实现批量的操作。。。获取文件夹list的作用,与获取文件名类似。。。
Get folder List Code
%let fdnm = B:SAS ;
%put &fdnm.;
filename xcl_fil pipe "dir &fdnm.*. /b";
data folder;
infile xcl_fil truncover;
input folder $char1000.;
put folder=;
run;
效果
Get file name
%let fdnm = E:Sta_pgmCSV ;
%put &fdnm.;
filename xcl_fil pipe "dir &fdnm.*.CSV /b";
data file;
infile xcl_fil truncover;
input file$char1000.;
put file=;
run;
请不写效果了,效果和上面的一样,只是这次换成了CSV