1.Missing(),如果变量有缺失值,则返回真。如
data test_miss; set learn.blood; if missing(Gender) then MissGender + 1; if missing(WBC) then MissWBC + 1; if missing(RBC) then MissWBC + 1; if Chol lt 200 and not missing(Chol) then Level = 'Low '; else if Chol ge 200 then Level = 'High';run;当变量名形如x1-x5,可以调用missing(of x1-x5).此种写法也可用于诸如sum等函数。2.Ranuni.返回0到1的随机数。若以0作为种子,SAS将以系统时间作为种子产生随机数。3.Lag返回前一个观测值的函数。看下面的代码data look_back;input Time Temperature;Prev_temp = lag(Temperature);Two_back = lag2(Temperature);datalines;1 602 623 654 70;得到结果为Listing of LOOK_BACKPrev_Obs Time Temperature temp Two_back1 1 60 . .2 2 62 60 .3 3 65 62 604 4 70 65 62lag返回前一个观测值,lag2将返回往前数两个的观测值,不是指两个观测值。呵呵。lag的一般作用为计算两个变量的差值。将上例略微修改一下,计算两天的温度差。data diff;input Time Temperature; Diff_temp = Temperature – lag(Temperature);datalines;1 602 623 654 70;当然更直接的用法是用Diff函数。data diff;input Time Temperature; Diff_temp = dif(Temperature);datalines;1 602 623 654 70;4.Compbl:将字符串中两个或两个以上的空格删除只剩一个空格(即 compress blank)。Compress删除空格或指定的字符。假设有一个名为电话号码的变量,由于其来源的不同,导致格式多样。Phone(908)232-4856210.343.4757(516) 343 - 92939342342345现在想去掉左右括号,点号和-号。data phone; length PhoneNumber $ 10; set learn.phone; PhoneNumber = compress(Phone,' ()-.'); drop Phone;run;compress的参数称为修饰语(modifier),各个修饰语的意思如下d 删除数字a 删除大小写字符i 忽略大小写k 保留字符串s 删除空格,制表符等p 删除标点符号例如函数 作用 返回值compress(String,,'a') 删除所有字符串 123compress(String,,'kd') 删除除数字外的其它字符 123compress(String,'wxyz','i') 忽略大小写删除 wxyz 123compress("A?B C99",,'pd') 删除标点符号和数字 AB C5.连接字符串。||或者!!将连接两个字符串为一个字符串,其长度等于两个字符串长度之和。比方说one=ABC,two=DEF,则one||Two将返回ABCDEF.CAT函数等同于||,除了返回的字符串的长度以外,其缺省值是200.Cats函数在连接字符串前去掉字符串前面和后面的空格。Catx类似于Cats,在去掉前后的空格后,会在连接的两字符串中间插入分隔符。下述代码为其例子。title "Demonstrating the Concatenation Functions";data _null_; Length Join Name1–Name4 $ 15; First = 'Ron '; Last = 'Cody '; Join = ':' || First || ':'; Name1 = First || Last; Name2 = cat(First,Last); Name3 = cats(First,Last); Name4 = catx(' ',First,Last); file print; put Join= / Name1= / Name2= / Name3= / Name4= /;run;输出结果Demonstrating the Concatenation FunctionsJoin=:Ron :Name1=Ron CodyName2=Ron CodyName3=RonCodyName4=Ron Cody6.Find函数。其语法形式如下find(string, find-string, modifiers, starting-position)7.字符串拆分函数Scan.Scan函数提出以空格或标点符号隔开的第n个单词。不同于trim,trim只是提取字符。8.比较字符串函数Compare9.模糊匹配函数Spedis.例如data fuzzy; input Name $20.; Value = spedis(Name,'Friedman');datalines;FriedmanFreedmanXriedmanFreidmanFriedmannAlfredFRIEDMAN;返回结果如下Listing of FUZZYName ValueFriedman 0Freedman 12Xriedman 25Freidman 6Friedmann 3Alfred 100FRIEDMAN 87当两个字符串完全匹配时,将返回0.第一个字符匹配错误,将比其它字符匹配错误所得的处罚分数更大。10.字符串替换函数Translate会替换某个字符,而Transwrd会替换某个单词。例如data trans; input Answer : $5.; Answer = translate(Answer,'ABCDE','12345');datalines;14325AB12351492;得到结果如下AnswerADCBEABABCEAD9BTranwrd经常用于标准化地址等,如以Street替换St.,以Road替换Rd.,等等