sas数据整理的16个技巧

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

sas数据整理的16个技巧

1、修改属性

attrib

2、根据条件删除记录

if 条件then delete;

3、分拆数据集

data master missing; 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;set ad;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) 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等函数。

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 6

5 62

lag返回前一个观测值,lag2将返回往前数两个的观测值,不是指两个观测值。呵呵。lag的一般作用为计算两个变量的差值。将上例略微修改一下,计算两天的温度差。

data diff;

input Time Temperature;

Diff_temp = Temperature – lag(Temperature);

datalines;

1 60

2 62

3 65

4 70

;

当然更直接的用法是用Diff函数。

data diff;

input Time Temperature;

Diff_temp = dif(Temperature);

datalines;

1 60

2 62

3 65

4 70

;

pbl:将字符串中两个或两个以上的空格删除只剩一个空格(即compress blank)。Compress删除空格或指定的字符。

假设有一个名为电话号码的变量,由于其来源的不同,导致格式多样。

Phone

(908)232-4856

210.343.4757

(516) 343 - 9293

9342342345

现在想去掉左右括号,点号和-号。

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') 删除所有字符串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= /

相关文档
最新文档