第三章 开发你的数据

1、创建并重新定义变量

基本形式:variable=expression

variable是变量名,expression可以是常量、其他变量、或者数学表达式(遵循运算法则:先算指数、再算乘除、之后是加减,可以用括号改变运算等级)。

data a;
input id fruit $;
cards;
1 apple
2 banana
3 cherry
;
run;

data b;
set a;
id=id+1;/*重新定义变量id*/
sign="healthy";/*创建新变量sign*/
run;

A:

B:

2、使用SAS函数

SAS函数400多个,涵盖类别如下:

基本形式:

function-name(argument,argument,...); 所有的函数都需要括号,即使没有参数。

函数可以嵌套。

例子:

birthdat=MDY(Month,Day,Year);

NewVal=INT(LOG(10));

每个类别的函数的使用将另开专题讲解。

3、使用IF-THEN语句

条件语句IF-THEN的基本形式为:IF 条件 THEN 执行;

符号替代写法含义
=EQequals
^=、~=NEnot equal
>GTgreater than
<LTless than
>=GEgreater than or equal
<=LEless than or equal
inequal in a range

(1)一个条件一个执行:
IF condition THEN action;

(2)一个条件多个执行:(借助DO和END关键字)
IF condition THEN DO;
        action;
        action;
END;

(3)ELSE IF语句:(使用else要确保条件之间互斥,该语句可以将观测值分组)
IF condition THEN action;
ELSE IF condition THEN action;
ELSE IF condition THEN action;
ELSE action;

扩展:
IF condition THEN DO; 
    action; 
    action; 
END; 
ELSE IF condition THEN DO; 
    action; 
    action; 
END;

(4)IF语句构造子集
IF expression; 比如:IF sex='f';/*取数据集中的部分数据*/
IF expression THEN delete; 比如:IF sex='m' THEN delete;/*删除某些数据*/

可以使用AND和OR来定义多个条件

符号替代写法含义
&AND所有条件都为true
|、!OR至少有一个条件为true

4、处理SAS的日期数据

SAS处理日期数据的三个工具为:读取数据的informats,使用数据的函数,打印数据的formats。

  • 读取日期数据用formatted input,例如:input Birthdat MMDDYY10.;
  • SAS日期函数使得操作大大简便,例如:today()返回今天的日期;
  • 打印日期数据时,需要将数值换成日期,例如:format Birthdat WEEKDATE17.;

备注:将日期当做常数来使用,可通过在表达式中加入引号和字母D

Dat='22APR2005'D;

可选择的Date Informats,Functions和Formats如下:

解释例子

5、使用retain和sum语句

retain语句可以让SAS保留前一次变量的值,它可以出现在数据步的任何位置。

retain variable-list;

也可以指定一个初始值,而不是用缺失值或前一次的值代替初始值。

retain variable-list initial-value;

sum语句用于将一个表达式的值累加到一个变量上去。

variable+expression;

将表达式的值赋值给变量,同时将变量的值保留到下一次迭代。变量必须是数值型,且初始值为0

等价于→

retain variable 0;

variable=SUM(variable,expression);

举个例子:

/*计算某个人语数英三门成绩的最大值和总分*/
data sample;
input course:$20. score $;
cards;
English 88
Math 90
Chinese 75
;
run;

data sample1;
set sample;
retain maxscore;/*retain没有为变量指定初始值,默认初始值为缺失值*/
maxscore=max(maxscore,score);/*自动保留上一次maxscore的值*/
totalscore+score;/*相当于retain totalscore 0; totalscore=totalscore+scroe; 保留上一次totalscore的值*/
run;

6、用数组简化程序

变量太多时,借助数组简化程序。数据是一组变量的集合。

(1)基本形式:

array name(n) $ variable-list;

/*name是数组名,n是变量数,()可以用[]和{}代替,如果变量是字符串,则需要$;变量名按顺序排列*/

例如:

array store(4) Macys Penneys Sears Target
/*store(1)是Macys,store(2)是Penneys,store(3)是Sears,store(4)是Target*/

(2)命名规则

不超过32字节,以字母、下划线开头,只能包含字母、数字、下划线;
举个例子:
data score;
input name $ Chinese $ Math $ English $;
cards;
France 100 99 Na
Kimmy 99 88 55
Alice 88 Na 99
;
run;

data score1;
set score;
array course(3) $ Chinese Math English;
do i=1 to 3;
if course(i)='Na' then call missing(course(i));/*将成绩为'Na'的置空*/
end;
run;

备注:数组没有被保存在数据集中,序号i被保存在数据集中啦,i是新创建的变量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值