SAS编程中的横线
首先要说的一招是SAS编程中的横线的用法,最常见的是一道横线,当然今天要说的这一招并不是一道横线,那么也不妨先来看看一道横线的作用~
代码语言:javascript复制data _null_;
a1=.;a2=3;a3=4;a4=.;
/*比如计算有规律变量的缺失值或者求和等等*/
nmiss=nmiss(of a1-a4);
sum=sum(of a1-a4);
put "nmiss=" nmiss;
put "sum=" sum;
run;
从上面代码不难道看到代码中的一道横线,此处一道横线表示从a1到a4之间的变量,也就是有规律的变量名,a1、a2、a3、a4这四个变量。那么在看看小编前段时间新学的一招~嗯,还是先来看一段代码~
代码语言:javascript复制data DB.VS(LABEL="B表/生命体征");
length SOURCE USUBJID SUBJID FORM $500.;
set RAW.VS_B1(in=b1) RAW.VS_B2(in=b2) RAW.VS_B3(in=b3) RAW.VS_B4(in=b4) RAW.VS_B5(in=b5) RAW.VS_B6(in=b6);
if b1 then Form="B1/生命体征及实验室检查";
else if b2 then Form="B2/生命体征及实验室检查";
else if b3 then Form="B3/生命体征及实验室检查";
else if b4 then Form="B4/生命体征及实验室检查";
else if b5 then Form="B5/生命体征及实验室检查";
else if b6 then Form="B6/生命体征及实验室检查";
Label FORM="表单名称";
if cmiss(of VSYN--DBP)=5 then delete;
run;
看倒数第二句的if语句后面的 cmiss(of VSYN--DBP),在这里小编就用了新学的一招,俩道横线,作用是啥呢,表示变量从数据集中所在的位置到另外一个变量位置之间的变量(包含自身)。看下面那个图,就应该好理解了~
当然,这俩道横线应用的例子并不仅仅局限于此,可以扩展到很多地方的应用,这里小编也就不再举例子了~
因为知识是活的,例子是死的~
把if写进行赋值语句中
很久以前呀,小编看到别人写的一个程序,当时就吃惊了,还能这样写!然后就像发现新大陆一样,立马去查了帮助文档,还真有这个函数!一个很好的函数,是啥呢,那就是IFC与IFN,不妨先来看看一个例子~
代码语言:javascript复制data DB.AE;
set DB.AE;
AETIM1=input(strip(VVALUE(AESTDTC))||strip("T")||strip(AESTTIM),??is8601dt.);
AETIM2=input(strip(VVALUE(AEENDTC))||strip("T")||ifc(^missing(strip(AEENTM)),strip(AEENTM),"00:00"),??is8601dt.);
format AETIM1 AETIM2 is8601dt.;
run;
看例子,有用到了ifc这个函数,ifc(条件,真的时候返回值,否的时候返回值);什么时候用ifc与ifn这个取决于返回值是字符型还是数值型!