SAS读取原始数据
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=REFFILE DBMS=XLS OUT=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:OPS DTLS:7:Pranab:632 DTLS:2:Dan:452 DEPT:HR DTLS:4:Ryan:487 DTLS: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;
当执行上面的代码,我们可以得到下面的输出。