SAS编程

您所在的位置:网站首页 sas编程教程 SAS编程

SAS编程

2023-11-12 18:55| 来源: 网络整理| 查看: 265

1.条件判断函数 

ifc函数(条件,执行语句1,执行语句2):根据表达式是否为真、假或缺失返回字符值。

ifn函数(条件,执行语句1,执行语句2):根据表达式是否为真、假或缺失返回一个数值。

例如:

ENRLFL=ifc(DSYN="是","Y","N"); /*ENRLFL为入组人群标识*/ data su1; set raw.su(rename=(SUDYN=MH1 SUDQYN=MH2 SUSYN=MH3)); if MH1^="NA!" then MH1N=ifn(MH1="是",1,2); if MH2^="NA!" then MH2N=ifn(MH2="是",1,2); if MH3^="NA!" then MH3N=ifn(MH3="是",1,2); keep USUBJID MH: ; run; 2.coalescec函数/coalesce函数

coalescec函数(s1,s2,..,sn):从字符参数列表中返回第一个非空值或非缺失值。 

coalesce函数(s1,s2,..,sn):返回数值参数列表中第一个不缺失的值。

例如:

​ETHNIC=coalescec(ETHNICO,ETHNIC); /*其他名族,民族*/ EOSDT=input(coalescec(DSEXDAT,DSENDAT),yymmdd10.); /*中止试验日期,完成试验日期*/ 3.与缺失值相关的函数

n函数:返回非空或非缺失数值的个数。(针对数值型变量或常量);

nmiss函数:返回缺失数值的个数(针对数值型变量或常量,将字符型变量的所有值都当作缺失值);

cmiss函数:计数丢失参数的数量(数值型、字符型均可);

not missing :如果是缺失的,则返回0;反之,则返回1;

missing函数:如果是缺失的,则返回1;反之,则返回0;

call missing:对参数进行置空操作;

data class; set sashelp.class; if age=13 then call missing(weight,sex); /*call missing*/ a=n(age,weight); /*n*/ b=nmiss(age,weight); /*nmiss*/ c=cmiss(sex,weight); /*cmiss*/ d=not missing(sex); /*not missing*/ e=missing(sex); /*missing*/ drop name height; run; proc print; run;

运行结果为:

例如:

if nmiss(weight,height)=0 then BMI=round(WEIGHT/(HEIGHT/100)**2,0.1); if missing(RANDNO) then do; ARM="筛选失败"; ARMCD="FAIL"; end; 4.kscan函数/scan函数

kscan函数(s,n):表示从变量中以char为分隔符提取第n个部分。

scan函数(s,n):表示从字串string中以char为分隔符提取第n个字串。

5.compress函数

compress函数(s,c,m) :将字符串c(默认为空格)从字符串中移除,m为操作符,如下:

        a  增加字母(A- Z, a - z)、中文到初始字符里(chars)。

        c  增加控制字符。

        d  增加数字到初始字符里(chars)。

        f  增加下划线、字母 (A - Z, a - z) 到初始字符里(chars)。

        g  增加图形字符到初始字符里(chars)。

        i  忽略字符大小写。

        k  不移除初始字符(chars)而是返回这些字符。

        l   增加小写字母(a - z)、中文。

        n  增加数字、下划线和字母(A - Z, a - z)。

        o  一次性处理第二、第三个参数,而不是每次调用函数时都处理。

           在data步或sql步中(不包括where子句)使用此操作符,当在循环中调用compress且第二、三参数不变时,会极大加快处理速度。

        p  增加标点符号。

        s  增加分隔字符,包括空格,水平制表符,垂直制表符,回车符,换行符和换页符。

        t  去除第一、二参数的尾部空格。

        u  增加大写字母(A- Z)。       

        w  增加可打印字符。

        x  增加十六进制字符。

操作符可以多个一起使用,也可以与需要删除的字符一起使用。需要注意的是,操作符的默认位置是compress的第三个参数,因此在没有第二个参数的情况下,需要连续输入两个逗号,表示第二个参数为默认。

6.kindex函数

kindex函数('x','y'):在x中查找字符串y,返回第一次出现的位置,找不到返回0。

例如:

data adsl1; set adsl; TRTSEQP=kscan(ARM,2,"组"); /*kscan函数*/ TRTSEQPN=input(compress(TRTSEQP,"","kd"),best1.); /*compress函数*/ if kindex(ARM,"50mg") then TRTGR1N=1; /*kindex函数*/ if kindex(ARM,"100mg") then TRTGR1N=2; run; proc print; run;

运行结果为:

 7.catx函数

catx函数('',x,y):删除开头和结尾的空格,插入分隔符,并返回连接的字符串。

例如:

​TR01SDTM=catx("T",ECDAT,ECTIM); /*使用'T'连接日期与时间变量*/  8.choosec函数

choosec函数:返回一个数值,表示从参数列表中选择的结果。根据变量的数值分别赋值。

9.whichc函数

whichc函数:从字符串列表中返回该字符串的第一个位置。除字符串列表所列的其余结果返回0。

例如:

data adsl3; set adsl2; TRTGR1=choosec(TRTGR1N,"50mg交叉组","100mg交叉组"); TRT01PN=whichc(TRT01P,"50mg安慰剂组","100mg安慰剂组","50mg试验组","100mg试验组"); TRT02PN=whichc(TRT02P,"50mg安慰剂组","100mg安慰剂组","50mg试验组","100mg试验组"); run; proc print; run;

运行结果为:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3