《SAS编程与数据挖掘商业案例》学习笔记之十

继续之前的读书笔记,本次讲解sas主要的变量操作,包括基本赋值语句、累加语句、keep语句、retain语句、array语句、rename语句、length语句。


1.基本赋值语句

z=x y;

z=sum(x,y);  sum函数的好处是可以克服缺失值的影响;

 

2.如果表达式中既有数值型变量又有字符型变量的话,则会将字符型变量转化为数值型变量

3.系统在编译阶段,对于赋值语句变量,如果是字符型变量则长度为1,如果是数值型变量则长度为8,接下来,系统将执行赋值语句,这时变量长度将由第一次读入的表达式的运算结果决定。一旦第一次读入确定长度之后,下一次pdv无论读入多长的数据,都不会改变变量的长度。除非提前用length语句限定变量的长度。

 

4.累加语句

x 1,x (-1)都是累加语句,其中x必须是数值型变量,在编译阶段,pdv自动设置累加变量值为0,它的值从当前执行后一直保留在pdv中,直到下一次执行为止。

在项目实践中,一般用retain语句替代累加语句,因为retain语句可以初始化累加变量为一个非零值,而累积语句初始值只能为0.

 

5.keep语句(keep语句不是可执行语句)

Data a3;

  set sashelp.class(keep=name weight);

  x=1;

  keep name x;

Run;

 

Data a4(keep=name x);

    set sashelp.class(keep=name weight);

    x=1;

Run;

以上两个程序输出结果一样,

但是对于读入数据集时,keep=的形式性能要远高于keep的形式,因为keep=的形式是仅限后面的变量进入pdv,对于拥有几百个变量的数据集而言,keep=效率要高;

不过对于数据输出方面,keep=keep性能没有区别;上面两个语句性能完全一样。

6.retain语句(不是一个可执行语句

pdv运行规律:data语句与run语句构成了一个循环语句,一般情况下每读一遍data步所有语句时,pdv都会清空所有变量值,并设置为缺失值。然后根据执行语句,再次对变量进行赋值。当data步使用retain语句时,pdv则不会清空retain语句对应变量,而是一直保留直到下次该变量再次执行。

retain语句在data步中有着广泛的应用,对于数据集的操作可以到单元格,而一般函数只能操作到列,实际应用中retain会使程序更加灵活化。可以控制一个变量的值不变,除非有外部的条件的变化而变化。

retain语句主要实现以下需求:

汇总数据,累加变量,纵向比较变量,创建flag标识变量,处理缺失值,迭代累加字符变量值。

Eg:关于汇总数据的一个例子(按照每个id,汇总cns的值,汇总id的记录数,如果txn_cde变量取101201两个值,则累加计算一次,计算txn_dte的最小值,)

libname chapt4 "f:\data_model\book_data\chapt4";

data chapt4.retain1;

input id txn_cde$ cns txn_dte$;

cards;

10 101 10 20070101

10 101 20 20080402

10 201 30 20050203

20 101 40 20040105

20 201 50 20040105

20 301 60 20070806

20 201 70 20050607

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值