SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制
1. 各种循环与控制
DO组 创建一个执行语句块DO循环 根据下标变量重复执行DO和END之间的语句DO WHILE 重复执行直到条件为假则退出循环DO UNTIL 重复执行直到条件为真则退出循环DO OVER 对隐含下标数组元素执行DO/END之间的语句END 退出DO或SELECT语句的标志SELECT 选择执行SAS语句IF-THEN/ELSE有条件执行一个SAS语句GO TO 使SAS语句跳转到GO TO语句后面,继续执行其他语句RETURN 不和LINK语句连用时。跳转到DATA步开头;和LINK语句连用时,跳转到LINK后面的语句。CONTINUE 停止DO循环中当前循环,跳转到DO语句继续执行下一次循环,只能用在DO循环。LEAVE 跳出当前DO循环或SELECT组,继续执行后面的DATA步。可用在DO循环或SELECT.
2. SELECT - WHEN 顺序执行WHEN,当第一个WHEN为真跳出,或者执行OTHERWISE,否则报错。
实践:拉直数据集
libname chapt6'f:\data_model\book_data\chapt6'; data fishdata4; set chapt6.fishlength(keep=location data_name_measurement); by location date; array tr[1:4] length1-length4; retain length1-length4; if first.date then do i=1 to 4; tr(i)=0; end; select(_name_); when('length1')length1=measurement; when('length2')length2=measurement; when('length3')length2=measurement; when('length4')length2=measurement; otherwise; end; if last.date; keep location date length1-length4; run;
3. DO循环
WHILE|UNTILWHILE语句执行之前被计算,条件真。DO WHILE语句是的当条件为真时重复执行DO组中的这些语句。 UNTIL语句执行之后被计算,条件为真。DO UNTIL语句连续执行DO组中的语句块直到UNTIL条件为真时退出循环。
4. DO OVER语句实践:
求最大值对应的变量
data a; input v1 v2 v3 @@; datalines; 1 2 3 1 4 5 2 4 data b; set a; _tem=max(of v1-v3); array arr v1-v3; do over arr; if arr=_tem then v4=vname(arr); end; drop _tem; run;
5. 在DATA步的其他地方,RETURN语句使得SAS系统返回到DATA步开头(常用)。
6. SAS常用全程语句
全程语句是可以用在一个SAS程序脚本中的任何地方的语句。可以用在数据步,也可以用在过程步,甚至可以单独使用。常用的全程语句COMMENT 作为其他SAS程序的一种解释或者屏蔽功能X 发布主机操作系统命令,如DOS命令LIBNAME 定义SAS逻辑库FILNAME 标记一个外部文件%INCLUDE 从外部文件等调出SAS语句和数据行TITLE 输出打印的标题行FOOTNOTE 输出打印的脚注行OPTIONS 改变SAS默认的系统选项
7. FILENAME语句
发送程序运行结果到EMAIL
filename outbox email to='sendname@company.com' type='text/html' subject='Test Subject'; ods html body=outbox/*Mail it!*/; title 'Here is tile'; proc print data=sashelp.class; run; ods html close;
程序中,filename定义一个email邮件,包括发送对象、发送文件类型和发送主题。然后通过ods html方式输出数据集class到指定对象的邮箱中去。抓取某个网页的源代码
filename ws url "http://www.sas.com"; data sas; infile ws length=len lrecl=4000; input record $varying4000.len; run;
捕获SAS门户网站源码,并导入到SAS数据集中去,在Web文本挖掘中,常用。
8. 输出控制
SAS系统的输出时执行SAS程序的结果。主要包括如下三点: LOG(日志窗口):主要输出程序运行过程中产生的日志。 OUTPUT(输出窗口结果):主要是SAS过程步运行产生图表结果。 GRAPH(图形窗口):主要是SAS过程步运行产生的图行结果。实际上SAS系统与外部其他系统进行数据交换,如运行结果输出到Excel、变成SAS数据集等,都需要SAS另外一个重要的输出控制方法ODS(输出文件系统)来控制。其中,在输出文件格式中,除了DATA步和PRINTTO过程步主要输出TXT文件外,其余文件格式均由ODS方法产生。
9. ODS输出目标、输出对象如下:
输出目标(管道) 含义 LISTING 字符文本在OUTPUT窗口显示、图形在GRAPH1窗口显示 RESULTS 输出结果在结果窗口显示 OUTPUT 把OUTPUT窗口的显示内容(输出对象)转换成SAS数据集 HTML 把OUTPUT窗口的显示内容(输出对象)转换成HTML文件 CSVALL 把OUTPUT窗口的显示内容(输出对象)转换成含有逗号的标记语言文件 RTF 把OUTPUT窗口的显示内容(输出对象)转换成RTF文件 PDF 把OUTPUT窗口的显示内容(输出对象)转换成PDF语言文件 其他第三方格式 对应的第三方格式文件
输出对象 含义由SAS过程步创建 一个输出对象的属性主要包含对象名称、对象属性、对象标签和对象路径ODS实践:输出过程步中UNIVARIATE所有输出对象--对象名称,对象标签,对象模板,对象路径 ODS TRACE
ods trace on; proc univariate data=sashelp.class; class sex; var age; run; ods trace off;
ODS EXCLUDE:是SECLECT的逆向操作,即在输出目标中排出要输出的对象。