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 <base=数据集 compare=数据集> <nosummary> <transpose>;
by 变量1 变量2 …;
id变量1 比纳凉2…;
run;
< >中的内容表示可选项,表示该选项可写可不写,根据实际需要而定。
base 和compare分别指定两个比较和被比较的数据集,nosummary的作用是不显示一些概括性的结果,transpose的作用是安吉路显示不一致的结果,如果不能指定该选项,默认的是按变量显示不一致的结果,具体按哪个顺序显示取决于你的爱好和目的。
3.数据清洗
1)查找和删除重复值
proc sort,基本格式如下:
proc sort <data=数据集> <out=数据集> <nouniquekey> <nodupkey>;
by <descending> 变量1 <descending> 变量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 数组名[下标] <$> <数组元素> <(元素初始值)>;
下标指定数组中包含的元素个数,这里的元素一般就是变量。