SAS – 读取原始数据
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;
执行上述代码后,我们得到以下输出。