首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAS-之前学了俩招,最近用了一下~

SAS-之前学了俩招,最近用了一下~

作者头像
Setup
发布2019-10-21 17:35:51
1.8K0
发布2019-10-21 17:35:51
举报
前段时间呀,小编学了俩招,最近用了一下,发现还很好用的~所以今天就给大家分享一下小编学的这俩招...

SAS编程中的横线

首先要说的一招是SAS编程中的横线的用法,最常见的是一道横线,当然今天要说的这一招并不是一道横线,那么也不妨先来看看一道横线的作用~

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这四个变量。那么在看看小编前段时间新学的一招~嗯,还是先来看一段代码~

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,不妨先来看看一个例子~

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这个取决于返回值是字符型还是数值型!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAS程序分享号号号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档