数据的对比
SAS中对比两个数据集的命令是proc compare,它的基本格式如下:
proc compare <base=数据集 compare=数据集> <nosummary> <transpose>;
by 变量1 变量2;
id 变量1 变量2;
run;
其中,proc compare
语句是调用数据比较过程,选项base
和compare
分别指定被比较的两个数据集; nosummary
的作用是不显示一些概括性的结果;而transpose
则是按记录显示不一致的结果,默认是按变量显示不一致的结果。
而id
语句通常指定索引变量,如id号,默认显示行号。举例说明:
一旦发现输入错误的数据集,便可以使用if ...then...
语句进行修改,举例说明:
数据的清洗
1.查找和删除重复值
SAS利用proc sort
过程来查找和删除重复值,它的基本格式如下:
proc sort <data=数据集> <out=数据集> <nouniquekey> <nodupkey>;
by <descending> 变量1 <descending> 变量2 ...;
run;
其中,若不指定out
选项,那么排序后的数据集将覆盖原有数据集;nouniquekey
的作用是输出重复值,nodupkey
选项是输出唯一值。
by
语句指定排序的变量,可以指定多个,默认按升序排序。
2.扩展内容:first.变量和last.变量
SAS的sort过程会自动产生两个变量:first.变量和last.变量,这两个变量分别表示某变量某个值的第一个和最后一个观测。直接举例说明其用法:
在上述例子中,需要注意的是,用set
语句赋值数据集时,也要加上by
语句,否则SAS不认first.id和last.id。
除此之外,如果想要过滤掉观测的第一行,可以在proc print;
前面加一句if not first.id;