我有一个temp
包含变量A1,A2,... Amax的数据.我想重新安排它的内部顺序,这样一旦打开它,它将显示A2,A5,.....
我知道有几种方法可以做到这一点.我通常使用的是retain
声明.
如果观察次数很多(N> 1,000,000),那么最有效的方法是什么?使用retain
或者proc sql
其他的数据步骤?
效率最高意味着我的处理时间最短.如果您还可以提供每种方法所需的内存和磁盘空间分析,我将不胜感激.
小智 7
几年前,我在英国的一个主要办事处参加了SAS会议.他们举办了一个与您的问题非常相似的研讨会,他们研究了重新排序和合并/加入数据集的不同技术的速度.
SAS提出的3种方式:
传统Datastep(保留)
Proc SQL(创建表)
哈希表(特别是围绕合并表不一定重新排序)
有趣的结果是,除非你在谈论一个非常大的数据集,否则retain和create table是均匀匹配的.
显然,如果你想合并/加入并重新排序,那么proc sql就是这样,因为使用数据步骤进行合并需要先排序,而proc sql则不需要.如果真的很大,Hash表可以节省90%的合并/连接处理时间.
作为小组讨论的一部分,其他结果之一是在使用大型数据集时重新排序时视图的IO性能得到改善:
proc sql noprint;
create view set2 as
select title, *
from set1;
quit;
** OR;
data set2 / view=set2;
retain title salary name;
set set1;
run;
Run Code Online (Sandbox Code Playgroud)
(参考此处:http://www2.sas.com/proceedings/sugi27/p019-27.pdf)