SAS编程|ADAM常用函数(1)

6 篇文章 7 订阅

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'>):表示从变量中以char为分隔符提取第n个部分。

scan函数(s,n<,'char'>):表示从字串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;

运行结果为:

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值