Sas 为什么合并的数据集在proc内容中不显示为已排序?
如果我这样做:Sas 为什么合并的数据集在proc内容中不显示为已排序?,sas,Sas,如果我这样做: data out.blah ; merge bling zorp ; by mrn ; run ; out.blah不应该显示为在PROC内容中排序吗?我发现情况并非如此。鉴于bling&zorp必须按mrn排序,在什么情况下,合并2个已排序数据集的结果也不会按顺序合并?下面是一个简单的示例,说明为什么最终数据集不会自动设置排序标志 proc contents data=sashelp.class; run; proc sort data=sash
data out.blah ;
merge
bling
zorp
;
by mrn ;
run ;
out.blah不应该显示为在PROC内容中排序吗?我发现情况并非如此。鉴于bling&zorp必须按mrn排序,在什么情况下,合并2个已排序数据集的结果也不会按顺序合并?下面是一个简单的示例,说明为什么最终数据集不会自动设置
排序
标志
proc contents data=sashelp.class;
run;
proc sort data=sashelp.class out=class;
by name;
run;
proc sort data=sashelp.classfit out=classfit;
by name;
run;
data want;
merge class classfit;
by name;
name = reverse(name);
run;
哎呀,不再排序了
当然,您在这里有两个帮助SAS的选项,因为您知道自己没有做过类似的傻事-SORTEDBY
data set选项和PRESORTED
proc sort
data want(sortedby=name);
merge class classfit;
by name;
run;
proc contents data=want;
run;
现在,宝贵的排序标志已设置,但已验证
当然未设置
proc sort data=want presorted;
by name;
run;
proc contents data=want;
run;
好了,一切都很好,数据只需快速传递一次,而不是一次过程排序的全部费用
2011年,来自SGF的一篇文章详细介绍了其中的一些内容,包括讨论如何设置排序标志(PROC SORT
和ORDER BY
,但其他内容不多)