从程序员到数据科学家:SAS 编程基础 (03)


SAS 编程需要使用什么样的开发环境?其实,跟任何恰计算机语言一样,你可以用任何纯文本编辑器编写 SAS 代码,比如 Windows 平台的记事本,NotePad++,你也可以使用 Unix 上的vi 来编辑代码。不过需要注意的是,Windows 上使用回车换行 CRLF Unix 使用 LF 来换行。

如果你要运行调试 SAS 代码,则需要安装SAS运行环境SAS Foundation;你也可以安装更加高级的 Windows 桌面客户端 SAS Enterprise Guide,或者使用Web 客户端 SAS Studio来远程提交执行代码。

不管哪一种窗口界面,安装完毕后大体都会有三个窗口:编写/提交 SAS 代码的 [编辑窗口,查看SAS 代码运行细节的 [日志] 窗口,显示输出结果的 [输出] 窗口。

在代码窗口中输入如下代码,然后点击菜单 [运行(R)]à[提交(S)] 或者直接点击工具然上面的运行按钮,就可以在日志窗口中看到提交代码的细节和执行结果:在 [日志] 窗口中输出Hello World!

Data _null_;
    put "Hello World!";
run;

SAS 代码提交编译运行时,SAS 会检查语法错误,并将语法错误输出到日志窗口中。语句中常见的语法错误包括的关键字拼写错误无效选项引号不匹配,或者语句结束符分号缺失等。

语法错误信息包括出错的行列,以及错误的详细描述,显示在Log窗口中。语法错误包括ERRORWARNING两大类,分别以红色和绿色显示。由于SAS具有强大的拼写错误容错能力,SAS能够智能修正的错误被归入WARNNING类错误,代码依然能正常运行。而红色表示SAS 未能修正的错误,用户必须修正后才能正常执行。比如:

procx printx datax=sashelp.class;
run;

但对于一些参数错误,比如指定了不存在的数据集 sashelp.classxSAS会以 ERROR显示。

59   proc
print data=sashelp.classx;
ERROR: 文件“SASHELP.CLASSX.DATA”不存在。
60   run;

注意:有时正是因为 SAS 运行环境对代码的容错能力太强,有些错误会隐藏得较深,并不能立马发现。我们可以采用分块调试的办法将语法错误限制在最小的范围内。比如:title "Hello World; SAS 只在第三次提交的时候才会报告错误。

SAS 程序编译之后,SAS扫描整个步骤,在到达 Step边界时如果没有语法错误则执行该步骤,直到整个SAS程序被处理完毕。

当代码编辑窗口激活时,你可以随时点击菜单 [文件(F)]à[保存(S)来保存您的代码。代码缺省以对应语言的编码(比如 中文是 Simplified Chinese (EUC) )来保存。你也可以在保存代码对话框中指定Unicode UTF-8, UTF-16LE UTF-16BE编码格式,有/或者没有字节顺序标记的方式存储SAS 程序。

小知识:字节顺序标记BOM就是告诉文件读/写程序在文件最开始的23字节处有特殊值:EF BB BFFF FEFE FF 分别表示UTF-8UTF-16 Little Endian UTF-16 Big Endian

你可能有疑问,为什么输出窗口竟然没有任何输出。与我们传统编程的I/O不同,SAS 的输出窗口是给前面提到的SAS输出传送系统ODSLISTING 目标用的。上面的代码中没有任何ODS 输出,自然输出窗口中没有结果。让我们尝试创建一个数据,然后将数据打印到该窗口中:

/* InsideSAS 
 * Ex1: output to ODS LISTING;
 */
data mydata;
    Name="Yinliang";
    Sex='M';
    Age=30;
    Height=175;
    Weight=83.5;
run;
 
ods _all_ close; *Close all ODS Destination;
ods listing; *Open Listing Destination;
 
proc print data=mydata;
run;

提交代码执行后,输出窗口会打印用户创建的数据集 work.mydata, Work 是当用户没有显式指定时,SAS 运行时默认的 SAS 工作库。

在输出窗口,SAS 会打印出用户新创建的数据集 WORK.MyData

如果需要查看SAS 数据集的数据结构和定义,可以使用 PROC CONTENTS.比如:

proc contents data=mydata;
run;

执行结果将显示在输出窗口中。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值