SAS数据集:直接输入数据;从数据库软件导入数据,如Excel、Access、Oracle等
SAS建立的数据集默认存放在资源管理器中逻辑库的work文件夹中,但是一旦关闭SAS,work文件夹会自动清空。建立在work中的数据集称为临时数据集,建立在非work文件夹中的数据集称为永久数据集,数据集名前加入相应文件夹前缀(该文件夹必须已经存在逻辑库中)就把该数据集存放在了对应的文件夹中,即data 文件夹名.数据集名;
逻辑库中建立一个自己的文件夹用来存放用户建立的数据集(建立永久库):第一种方法,在自己的电脑上建立一个文件夹,打开SAS资源管理器的逻辑库,空白处右击选择新建,出现“新建逻辑库”窗口,填写文件夹名称,引擎默认,路径选择电脑上创建的文件夹,最后确认即可,对于自己建立的逻辑库,在调用数据集之前需要用libname语句把逻辑库与文件夹关联起来;第二种方法,利用SAS语句创建,libname 新建逻辑库文件夹名 “硬盘上文件夹路径”;;第三种方法,永久数据库也可以直接利用SAS语句直接指定一个路径和数据集名称,data “硬盘上文件夹路径\新建数据库名”;,例如 data “g:\study\first”;,意思就是在G盘的study文件夹中创建了名为first的数据集,与此同时,逻辑库中自动生成了名为“Wc000001”的文件夹,该文件夹中也有first数据集,在调用时可以直接写路径。
从数据库软件导入数据:通过菜单导入;用SAS语句直接导入,即data步或者利用PROC IMPORT,如下:
/*data步导入list input导入*/data stu1;infile "C:\Users\acer\Desktop\input.txt" encoding='utf-8' firstobs=2 obs=2 dlm=' ';input name $ age birth yymmdd8. address :$20.;format birth yymmdd10.;run;/*data步column input导入*/data stu2;infile "C:\Users\acer\Desktop\input.txt" encoding='utf-8' firstobs=6 obs=8;input name $ 1-4 age 5-6 birth 7-14 month 11-12 address $ 15-32;/*format birth yymmdd8.; ?怎么改变它的样式*/run;/*dlm和missover选项演示*/data stu3;infile "C:\Users\acer\Desktop\input.txt" encoding='utf-8' firstobs=10 obs=12 missover dlm=",";input name $ age birth yymmdd8. address :$200.; /*因为有缺失值所有不能采用固定列导入*/format birth yymmdds10.;run;/*import演示*/proc import datafile="C:\Users\acer\Desktop\example.xlsx" out=stu dbms=xlsx replace;sheet="sheet1";/*将C:\Users\acer\Desktop中的example.xlsx文件的表sheet1导入在SAS软件中并将其命名为stu*/getnames=yes;/*是否获取列名*/datarow=2;/*从第几行开始读取数据*/run;
从SAS软件导出数据,利用PROC EXPORT实现,
/*export演示*/proc export data=stu outfile="C:\Users\acer\Desktop\stu.xlsx" dbms=xlsx replace;sheet="信息";/*将SAS软件中的stu表导在C:\Users\acer\Desktop的位置名称为stu,格式为xlsx,表名为信息*/run;
SAS日期型数据的输出的特殊说明:SAS识别日期会自动转换为从1960年1月1日到输入日期的天数。日期型数据变量的输入时要写输入格式?但输出时一定要写输出格式