SAS可以从包含许多文件格式的各种来源读取数据. SAS环境中使用的文件格式将在下面讨论.
ASCII(文本)数据集
分隔数据
Excel数据
分层数据
读取ASCII (文本)数据集
这些文件包含文本格式的数据.数据通常由空格分隔,但SAS可以处理不同类型的分隔符.让我们考虑一个包含员工数据的ASCII文件.我们使用SAS中提供的 Infile 语句阅读此文件.
示例
在下面的示例中,我们读取数据来自本地环境的名为 emp_data.txt 的文件.
data TEMP; infile '/folders/myfolders/sasuser.v94/TutorialsPoint/emp_data.txt'; input empID empName $ Salary Dept $ DOJ date9. ; format DOJ date9.; run; PROC PRINT DATA = TEMP;RUN;
执行上述代码后,我们得到以下输出.
读取分隔数据
这些是列值由分隔符分隔的数据文件像逗号或管道等.在这种情况下,我们在 infile 语句中使用 dlm 选项.
示例
在下面的例子中,我们从本地环境中读取名为emp.csv的数据文件.
data TEMP; infile '/folders/myfolders/sasuser.v94/TutorialsPoint/emp.csv' dlm=","; input empID empName $ Salary Dept $ DOJ date9. ; format DOJ date9.; run; PROC PRINT DATA = TEMP;RUN;
执行上述代码后,我们得到以下输出.
读取Excel数据
SAS可以使用导入工具直接读取excel文件.如SAS数据集一章所示,它可以处理各种文件类型,包括MS excel.假设文件emp.xls在SAS环境中本地可用.
示例
FILENAME REFFILE"/folders/myfolders/TutorialsPoint/emp.xls"TERMSTR = CR;PROC IMPORT DATAFILE = REFFILEDBMS = XLSOUT = WORK.IMPORT;GETNAMES = YES;RUN;PROC PRINT DATA = WORK.IMPORT RUN;
上面的代码从excel文件中读取数据,并提供与上述两种文件类型相同的输出.
阅读分层文件
在这些文件中,数据以分层格式存在.对于给定的观察,有一个标题记录,其下面提到了许多详细记录.详细记录的数量可以因观察而异.下面是分层文件的说明.
在下面的文件中列出了每个部门下每位员工的详细信息.第一条记录是提及部门的标题记录,下一条记录以DTLS开头的几条记录是详细记录.
DEPT:IT DTLS:1:Rick:623 DTLS:3:Mike:611 DTLS:6:Tusar:578 DEPT:OPSDTLS:7:Pranab:632DTLS:2:Dan:452DEPT:HRDTLS:4:Ryan:487DTLS:2:Siyona:452
示例
要读取分层文件,我们使用下面的代码,我们使用IF子句识别头记录,并使用do循环处理详细记录.
data employees(drop = Type); length Type $ 3 Department empID $ 3 empName $ 10 Empsal 3 ; retain Department; infile '/folders/myfolders/TutorialsPoint/empdtls.txt' dlm = ':'; input Type $ @; if Type = 'DEP' then input Department $; else do; input empID empName $ Empsal ; output; end;run; PROC PRINT DATA = employees;RUN;
执行上述代码后,我们得到以下输出.