SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理
1. SAS变量操作的常用语句
代码语言:javascript
复制ASSIGNMENT 创建或修改变量
SUM 累加变量或表达式
KEEP 规定在数据集中保留的变量
DROP 规定在数据集中删除的变量
ARRAY 定义一个数组
RENAME 重命名数据集变量
LENGTH 定义变量长度
LABEL 定义变量标签
2. 连接符:||
代码语言:javascript
复制compress:消除空格
RETAIN应用:一是需要对某一个变量值进行累加、比较等操作。二是需要保留之前的某一满足条件的变量值到指定的观测对应的变量。
3.维度函数:MID() DIM(MULT)等加于DIM(MULT,1)
代码语言:javascript
复制LABEL:标签
4. SAS观测值操作
代码语言:javascript
复制OUTPUT 输出当前在PDV中的观测,继续无条件自行下面的语句。
IF 如果满足条件,继续执行后面语句;否则,返回DATA步开头。
WHERE 观测进入PDV之前进行条件判断。
REPLACE 更新观测,但仅在MODIFY语句中适用。
REMOVE 删除观测,但仅在MODIFY语句中适用。
DELETE 如果满足条件,返回DATA步开头;否则继续执行后面语句。
STOP 停止输出当前PDV中的观测,并退出DATA步。
WHERE语句在PDV之前执行。
5. 数据集管理主要包括数据集纵向拼接、转置、排序、比较、复制、重命名、删除等操作。通过SAS的过程步完成,常用过程步。
代码语言:javascript
复制APPEND 把来自SAS数据集的所以数据添加到另外一个SAS数据集的后面。
SORT 对原有SAS数据集安装一个或多个变量进行排序。
TRANSPOSE 对原有的SAS数据集进行行列转置
CONTENTS 输出SAS逻辑库成员的描述信息
DATASETS 管理SAS逻辑库成员,可以完成对SAS逻辑库中的所有成员进行输出列表、复制、换名、添加和删除等操作。
实践:在PROC SORT中用了NODUPKEY后最好一同使用OUT,OUT可以保证原来的数据集不变,把NODUPKEY后的产生的观测输出到新的数据集中。(万一程序开发有误,有保障)
带OUT=选项的删除重复BY值
代码语言:javascript
复制 data a;
input x y @@;
cards;
1 20 1 10 1 30 2 40 2 50
;
run;
proc sort data=a nodupkey out=b;by x;run;
6. 行列转置实践
代码语言:javascript
复制DATA比PROC效率高
对比:
6.1 列转置为行
PROC步:
代码语言:javascript
复制 proc transpose data=chapt6.fishdata
out=charpt6.fishlength(rename=(coll=measurement));
var length1-length4;
by location date;
run;
代码语言:javascript
复制 DATA步:
代码语言:javascript
复制 data chapt6.fishlength2;
set chapt6.fishdata(keep=location data length1-length4);
array tr[1:4] length1-length4;
do i=1 to 4;
measurement=tr(i);
output;
end;
keep location date measurement;
run;
代码语言:javascript
复制6.2 行转置列
PROC步:
代码语言:javascript
复制 proc transpose data=chapt6.fishlength
out=chapt6.fishdata2;
var measurement;
by location date;
id _name_;
run;
代码语言:javascript
复制 DATA步:
代码语言:javascript
复制 data chapt6.fishlength(keep=location date measurement);
do i=1 to 4;
set chapter6.fishlength(keep=location date measurement);
array tr[1:4] length1-length4;
tr(i)=measurement;
end;
keep location date length1-length4;
run;