SAS数据清洗和加工

1.数据合并

1)利用set语句进行纵向合并,用法格式为:

data 数据集;

set 数据集1(数据集选项)数据集2(数据集选项)…;

run;

数据集选项:set 数据集1(in=临时变量1)set数据集2(in=临时变量2)…;

                      set数据集1(rename=(原名1=新名1…)) 数据集2(rename=(原名1=新名1…))…;

 

查看变量属性:proc contents data=b;

复制数据集:set b;新建的b数据集会覆盖原来的b数据集。

data语句的作用是创建新的空白数据集,而不是打开数据集。

2)利用merge语句进行横向合并

data 数据集;

merge 数据集1 数据集2…;

by 变量1 变量2 …;

run;

data ab;
merge ab1 ab2;
by id;              /*指定按id变量连接两个数据集*/
drop a2 b2;         /*删除变量a2和b2*/
proc print;
run;

在利用by语句进行横向合并时,如果两个数据集事先没有按id排序,一定要先分别对它们都排序才能合并。 排序在SAS中可通过proc sort过程实现。

利用in=选项生成两个数据集的交集;

data ab;
merge ab1(in=d1) ab2(in=d2);
by id;
if d1=1 and d2=1;
proc print;
run;

2.数据对比

proc compare 基本格式如下:

proc compare ;

by 变量1 变量2 …;

id变量1 比纳凉2…;

run

< >中的内容表示可选项,表示该选项可写可不写,根据实际需要而定。

base 和compare分别指定两个比较和被比较的数据集,nosummary的作用是不显示一些概括性的结果,transpose的作用是安吉路显示不一致的结果,如果不能指定该选项,默认的是按变量显示不一致的结果,具体按哪个顺序显示取决于你的爱好和目的。

3.数据清洗

1)查找和删除重复值

proc sort,基本格式如下:

proc sort ;

by 变量1 变量2 …;

run;

out=数据集的意思是把排序后的数据输出到指定数据集中,如果不加该选项,排序后的数据集将覆盖原有数据集,这样原数据就无法找回。nouniquekey选项的作用是输出重复值,nodupkey选项的作用是删除重复值,也就是输出唯一值。descending选项的作用是按降序排序,如果不加该选项,默认的是按升序排序。

proc sort其实是个排序过程,如果没有nouniquekey和nodupkey这两个选项,它的作用就是实现对某变量的排序。

proc sort data=sasuser.xb nouniquekey out=rep;
by name gender;
proc print data=rep;
run;

2.查找缺失值

对多个变量执行完全相同的操作,可以考虑数组执行这些操作,可以大幅提高效率。

数组的一般形式:
array 数组名[下标] <$> <数组元素> <(元素初始值)>;

下标指定数组中包含的元素个数,这里的元素一般就是变量。

 

你可能感兴趣的:(SAS)