SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制
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|UNTIL
WHILE语句执行之前被计算,条件真。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的逆向操作,即在输出目标中排出要输出的对象。
SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制的更多相关文章
- 《SAS编程和数据挖掘商业案例》第14部分学习笔记
继续<SAS编程与数据挖掘商业案例>学习笔记系列,本次重点:经常使用全程语句 所谓全程语句.是指能够用在不论什么地方的sas语句,既能够用在data数据步语句里面,也能够用在proc过程步 ...
- 《SAS编程和数据挖掘商业案例》学习笔记# 19
继续<SAS编程与数据挖掘商业案例>学习笔记,本文側重数据处理实践.包含:HASH对象.自己定义format.以及功能强大的正則表達式 一:HASH对象 Hash对象又称散列表,是依据关键 ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(5)SAS宏语言、SQL过程
SAS学习笔记之<SAS编程与数据挖掘商业案例>(5)SAS宏语言.SQL过程 1. 一个SAS程序可能包含一个或几个语言成分: DATA步或PROC步 全程语句 SAS组件语言(SCL) ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理
SAS学习笔记之<SAS编程与数据挖掘商业案例>(3)变量操作.观测值操作.SAS数据集管理 1. SAS变量操作的常用语句 ASSIGNMENT 创建或修改变量 SUM 累加变量或表达式 ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(2)数据获取与数据集操作
SAS学习笔记之<SAS编程与数据挖掘商业案例>(2)数据获取与数据集操作 1. SET/SET效率高,建立的主表和建表索引的查询表一般不排序, 2. BY语句,DATA步中,BY语句规定 ...
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础
SAS学习笔记之<SAS编程与数据挖掘商业案例>(1)系统简介和编程基础 1. SAS系统简介 1.1 SAS是先编译后执行的语言,data步标志着编译的开始. 数据指针:当前内存缓存区, ...
- 《SAS编程与数据挖掘商业案例》学习笔记之十六
<SAS编程与数据挖掘商业案例>学习笔记,本次重点:sas宏变量 内容包含:宏变量.宏函数.宏參数.通配函数.字符函数.计算函数.引用函数.宏语句.宏应用 1.宏触发器: %name-to ...
- 《SAS编程与数据挖掘商业案例》学习笔记之十五
继续<SAS编程与数据挖掘商业案例>读书笔记,本次重点:输出控制 主要内容包含:log窗体输出控制.output窗体输出控制.ods输出控制 1.log窗体输出控制 将日志输出到外部文件 ...
- 《SAS编程与数据挖掘商业案例》学习笔记之十八
接着曾经的<SAS编程与数据挖掘商业案例>,之前全是sas的基础知识,如今開始进入数据挖掘方面笔记,本文主要介绍数据挖掘基本流程以及应用方向,并以logistic回归为例说明. 一:数据挖 ...
随机推荐
- [luoguP2896] [USACO08FEB]一起吃饭Eating Together(DP)
传送门 由于 Di 只有 3 种情况,那么就很简单了 f[i][j][0] 表示前 i 个,且第 i 个变成 j 的 递增序列最小修改次数 f[i][j][1] 表示前 i 个,且第 i 个变成 j ...
- codevs2370 小机房的树
题目描述 Description 小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同的节点上.有一天,他们想爬到一个节点上去搞基,但是作为两只虫子, ...
- codevs——1462 素数和
1462 素数和 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 青铜 Bronze 题解 题目描述 Description 给定2个整数a,b 求出它们之间(不含a ...
- laravel5.5更新到laravel5.7
为什么要更新呢?因为项目用的第三方后台扩展包,有很些bug,不够完美.想要一个漂亮的后台,那个后台只支持5.7. 然后,我就开始更新框架了. 修改后:"php": "&g ...
- Windows下擴展ubuntu虛擬機的分區大小
在虛擬分區上安裝ubuntu,8G的分区不够用,不願意重装,增加VM分区吧!先备份虛擬硬盤文件 VMWARE自带的工具:找到vmware安装目录下vmware-vdiskmanager.exe,双击無 ...
- 从hbase读取数据优化策略和实验对照结果
起因:工作须要.我须要每5分钟从hbase中.导出一部分数据,然后导入到ES中.可是在開始阶段编写的python脚本,我发现从hbase读取数据的速度较慢,耗费大量的时间.影响整个导数过程,恐怕无法在 ...
- CocoaAsyncSocket网络通信使用之数据编码和解码(二)
CocoaAsyncSocket网络通信使用之数据编码和解码(二) 在上一篇CocoaAsyncSocket网络通信使用之tcp连接(一)中,我们已经利用CocoaAsyncSocket封装了自己的s ...
- 【POJ3074】Sudoku DLX(Dancing Links)
数独就要DLX,不然不乐意. 数独的DLX构造:9*9个点每一个点有9种选择,这构成了DLX的729行,每行.列.阵有限制,均为9行(/列/阵),然后每行(/列/阵)都有九种数的情况.于是就有了3*9 ...
- (WIP) DPDK理论学习(by quqi99)
作者:张华 发表于:2016-04-22版权声明:能够随意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 组成模 ...
- LeetCode 160. Intersection of Two Linked Lists (两个链表的交点)
Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...