开发手册 欢迎您!
软件开发者资料库

SAS - 读取原始数据

SAS读取原始数据 - 从简单和简单的步骤学习SAS,从基本到高级概念,包括概述,环境,用户界面,程序结构,基本语法,数据集,变量,字符串,数组,数字函数,运算符,循环,决策,功能,输入方法,宏,日期和时间,SQL,输出传递系统,模拟,直方图,图表,散点图,箱线图,算术平均值,标准差,频率分布,交叉制表,T检验,方差,线性回归, Bland-Altman分析,卡方,Fishers精确检验,单向Anova,重复测量分析,假设检验。

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;

执行上述代码后,我们得到以下输出.

read_raw_data1

读取分隔数据

这些是列值由分隔符分隔的数据文件像逗号或管道等.在这种情况下,我们在 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;

执行上述代码后,我们得到以下输出.

read_raw_data1

读取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;

执行上述代码后,我们得到以下输出.

read_heirarchial_data2