SAS学习之产生新变量

1.直接用表达式或函数直接产生新变量

格式为:变量名=表达式或函数

例:

data a1;
input wt ht;
bmi=wt/(ht/100)**2;  /*“**”表示幂次方的意思*/
rbmi=sqrt(bmi);
obesity=(bmi>=28);
city="北京";
date="02apr2013"d;
format data yymmdd10.;
cards;
60 170
55 166
73 161
;
proc print;
run;

新变量得写在input和cards之间。

在SAS中日期常量都要写成“日月年”d这种格式(月是英文的前三个字母,年可以是2位或4位)

2.利用if-then语句产生新变量

格式为:

if 表达式 then 新变量=;

else 新变量=;

data lx;
input id lx$;
lx1=lx in ("有效","显效","痊愈");
if lx in ("有效","显效","痊愈") then lx2="有效";else lx2="无效";
cards;
1 显效
2 有效
3 无效
4 痊愈
;
proc print;
run;

3.利用retain语句和累加语句产生新变量

SAS在读取数据的时候是有遗忘症的,它每读完一条观测返回到data语句的时候,会忘掉刚才读取的数值。。

retain语句和累加语句可以使SAS留住上次的记忆不再重复读取,retain语句的基本格式:

retain 变量 <初始值>;

作用是生成一个变量,指定初始值,并保留该变量每次计算的结果。如果没有指定初始值,默认初始值为缺失值。

retain语句可以指定一个或多个变量,例如:

retain a 21; (指定a的初始值为21)

retain year 2001 total 0;(指定year的初始值为2001,total的初始值为0)

累加语句的基本格式是:变量+表达式;

year+1;(默认year=0,year+1产生的结果就是year=1)

total+amount;(amount变量必须在前面已经指定了,此时相当于total=total+amount)

data fsh;
input amount;
retain year 2000
year+1;
total+amount;
cards;
100
200
300
;
proc print;
run;

结果如上图所示

4.使用do循环语句产生新变量

do 变量=初始值 to 最终值 <by 增加量>;

3A3语句;

end;

使用do循环时要注意避免以下两个错误:1)忘记写output;语句,这导致SAS只能读取最后一个数,因为前面的数没有通过SAS显示;2)忘记写end;语句,此时SAS找不到循环结束的标志,给不出结果。

5.指定新变量的类型与长度

SAS中主要是用length语句来指定新变量的长度与类型,格式为:length 变量1<S> 长度1 变量2 <S> 长度2……;

该语句的意思是对变量指定一个长度,如果是字符型变量,还需要加上$符号。字符变量的长度是由第一个遇到的值的长度决定的,而且字符变量一旦产生,它的长度就无法改变。

length语句一定要在新变量产生之前就设定好,否则是不起作用的。

猜你喜欢

转载自blog.csdn.net/qq_42458954/article/details/82185434
SAS