课程表

SAS 基础

SAS 数据集操作

SAS 数据展示

SAS 基本统计程序

工具箱
速查手册

SAS读取原始数据

当前位置:免费教程 » 大数据/云 » SAS

SAS可以从包括许多文件格式的各种源读取数据。 SAS环境中使用的文件格式如下所述。

  • ASCII(文本)数据集
  • 分隔数据
  • Excel数据
  • 分层数据

读取ASCII(文本)数据集

这些是包含文本格式数据的文件。 数据通常由空格分隔,但也可以有不同类型的分隔符,SAS也可以处理它们。 让我们考虑一个包含员工数据的ASCII文件。 我们使用SAS中提供的Infile语句读取此文件。

在下面的示例中,我们从本地环境读取名为emp_data.txt的数据文件。

  1. data TEMP;
  2. infile
  3. '/folders/myfolders/sasuser.v94/TutorialsPoint/emp_data.txt';
  4. input empID empName $ Salary Dept $ DOJ date9. ;
  5. format DOJ date9.;
  6. run;
  7. PROC PRINT DATA=TEMP;
  8. RUN;

当执行上面的代码,我们可以得到下面的输出。

读取分隔数据

这些是数据文件,其中列值由定界字符(如逗号或管道等)分隔。在这种情况下,我们使用infile语句中的dlm选项。

在下面的示例中,我们从本地环境读取名为emp.csv的数据文件。

  1. data TEMP;
  2. infile
  3. '/folders/myfolders/sasuser.v94/TutorialsPoint/emp.csv' dlm=",";
  4. input empID empName $ Salary Dept $ DOJ date9. ;
  5. format DOJ date9.;
  6. run;
  7. PROC PRINT DATA=TEMP;
  8. RUN;

当执行上面的代码,我们可以得到下面的输出。

读取Excel数据

SAS可以使用导入工具直接读取excel文件。 如章节SAS数据集中所示,它可以处理各种各样的文件类型,包括MS excel。 假定文件emp.xls在SAS环境中本地可用。

  1. FILENAME REFFILE
  2. "/folders/myfolders/TutorialsPoint/emp.xls"
  3. TERMSTR=CR;
  4.  
  5. PROC IMPORT DATAFILE=REFFILE
  6. DBMS=XLS
  7. OUT=WORK.IMPORT;
  8. GETNAMES=YES;
  9. RUN;
  10. PROC PRINT DATA=WORK.IMPORT RUN;

上面的代码从excel文件读取数据,并给出与上述两种文件类型相同的输出。

阅读的分层文件

在这些文件中,数据以分层格式存在。 对于给定的观察,存在报头记录,在其下面提及许多详细记录。 详细记录的数量可以从一个观察到另一个观察。 下面是一个分层文件的插图。
在下面的文件中,列出了每个部门下每个员工的详细信息。 第一个记录是提到部门的头记录,下一个记录是以DTLS开头的几个记录是详细记录。

  1. DEPT:IT
  2. DTLS:1:Rick:623
  3. DTLS:3:Mike:611
  4. DTLS:6:Tusar:578
  5. DEPT:OPS
  6. DTLS:7:Pranab:632
  7. DTLS:2:Dan:452
  8. DEPT:HR
  9. DTLS:4:Ryan:487
  10. DTLS:2:Siyona:452

要读取分层文件,我们使用下面的代码,其中我们使用IF子句标识头记录,并使用do循环来处理详细信息记录。

  1. data employees(drop=Type);
  2. length Type $ 3 Department
  3. empID $ 3 empName $ 10 Empsal 3 ;
  4. retain Department;
  5. infile
  6. '/folders/myfolders/TutorialsPoint/empdtls.txt' dlm=':';
  7. input Type $ @;
  8. if Type='DEP' then
  9. input Department $;
  10. else do;
  11. input empID empName $ Empsal ;
  12. output;
  13. end;
  14. run;
  15.  
  16. PROC PRINT DATA=employees;
  17. RUN;

当执行上面的代码,我们可以得到下面的输出。

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号