前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【工具】SAS数据整理的16个技巧

【工具】SAS数据整理的16个技巧

作者头像
小莹莹
发布2018-04-19 17:17:18
2.3K0
发布2018-04-19 17:17:18
举报

1、修改属性   attrib

2、根据条件删除记录   if条件 then delete;

3、分拆数据集 data mastermissing; merge old new(in=x); by id; if x=0 then output missing; else output master; run; 4、利用attrib删去所有label data want;set have;attrib _all_label=""; run;

5、keep保留变量 data abc;setad;keep name label;run; 6、drop 删除变量 data abc;set ad;drop name label;run; 7、Missing(),如果变量有缺失值,则返回真。 如  data test_miss;   set learn.blood;  if missing(Gender) then MissGender + 1;   if missing(WBC) then MissWBC + 1;   if missing(RBC) thenMissWBC + 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等函数。

8、Ranuni.返回0到1的随机数。若以0作为种子,SAS将以系统时间作为种子产生随机数。

9、Lag返回前一个观测值的函数。 看下面的代码   data look_back;   input Time Temperature;  Prev_temp = lag(Temperature);  Two_back = lag2(Temperature);  datalines;   1 60   2 62   3 65   4 70   ;  得到结果为   Listing of LOOK_BACK   Prev_  Obs Time Temperature temp Two_back   1   1   60   .   .   2   2   62   60   .   3   3   65   62   60   4   4   70   65   62   lag返回前一个观测值,lag2将返回往前数两个的观测值,不是指两个观测值。呵呵。lag的一般作用为计算两个变量的差值。将上例略微修改一下,计算两天的温度差。   data diff;   input TimeTemperature;   Diff_temp = Temperature – lag(Temperature);   datalines;   1 60   262   3 65   4 70   ;   当然更直接的用法是用Diff函数。   data diff;   input Time Temperature;   Diff_temp = dif(Temperature);   datalines;   1 60   2 62   3 65   4 70   ;

10.Compbl:将字符串中两个或两个以上的空格删除只剩一个空格(即 compress blank)。Compress删除空格或指定的字符。  假设有一个名为电话号码的变量,由于其来源的不同,导致格式多样。  Phone   (908)232-4856   210.343.4757   (516) 343 - 9293   9342342345  现在想去掉左右括号,点号和-号。   data phone;  length PhoneNumber $ 10;   setlearn.phone;   PhoneNumber = compress(Phone,' ()-.');  drop Phone;   run;   compress的参数称为修饰语(modifier),各个修饰语的意思如下  d   删除数字   a   删除大小写字符   i   忽略大小写   k   保留字符串   s   删除空格,制表符等   p   删除标点符号   例如   函数   作用  返回值   compress(String,,'a')删除所有字符串   123   compress(String,,'kd')删除除数字外的其它字符   123   compress(String,'wxyz','i')忽略大小写删除wxyz   123   compress("A?B C99",,'pd')删除标点符号和数字   AB C

11、连接字符串。||或者!!将连接两个字符串为一个字符串,其长度等于两个字符串长度之和。比方说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 Functions   Join=:Ron :   Name1=Ron Cody   Name2=Ron Cody   Name3=RonCody   Name4=Ron Cody

12、Find函数。其语法形式如下   find(string,find-string, modifiers,starting-position)

13、字符串拆分函数Scan. Scan函数提出以空格或标点符号隔开的第n个单词。不同于trim,trim只是提取字符。 【功能】从字符表达式s中搜取给定的n个单词 【类别】 字符函数 【语法】 1. Scan(s,n) n为正数时,从字符s末尾提取n个字符 2. Scan(s,n) n为负数时,从字符s开始提取n个字符 3. SCAN (s,n<,list-of-delimiters>) 【注意】 1. 如果缺失指定的生成变量的长度,系统默认长度为200. 2. 如果|n|=0或大于字符s的长度,则该函数返回空格。 【例子】 data a; arg='ABC.DEF(X=Y)'; word=scan(arg,3); put word; run; data b; arg='ABC.DEF(X=Y)'; word=scan(arg,-3); put word; run; data c; arg='ABC.DEF(X=Y)'; word=scan(arg,-20); put word; run; data d; input Arr $ & 22.; ArrivalGate=scan(Arr,1,' '); DepartureGate = scan(Arr,2,' '); put DepartureGate ArrivalGate arr; cards; Arrival DepartureGates; run; 14、比较字符串函数Compare

15、模糊匹配函数Spedis. 例如   data fuzzy;   input Name $20.;   Value = spedis(Name,'Friedman');   datalines;  Friedman   Freedman   Xriedman   Freidman   Friedmann   Alfred   FRIEDMAN   ;   返回结果如下   Listing of FUZZY   Name   Value   Friedman  0   Freedman   12   Xriedman   25   Freidman   6   Friedmann  3   Alfred   100   FRIEDMAN   87   当两个字符串完全匹配时,将返回0.第一个字符匹配错误,将比其它字符匹配错误所得的处罚分数更大。

16、字符串替换   函数Translate会替换某个字符,而Transwrd会替换某个单词。例如   data trans;   input Answer : $5.;   Answer = translate(Answer,'ABCDE','12345');   datalines;  14325   AB123   51492   ;   得到结果如下   Answer   ADCBE   ABABC   EAD9B  Tranwrd经常用于标准化地址等,如以Street替换St.,以Road替换Rd.,等等。

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

本文分享自 PPV课数据科学社区 微信公众号,前往查看

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

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

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