如何限制proc transpose SAS中的转置变量数

时间:2014-03-18 12:40:38

标签: sas transpose

我正在使用

转置一个包含数百万个观察结果的文件
proc transpose data=click out=CLICK_transp name=test prefix=var;
by ComlogId;        
var clickthrulink_Description;
run;

但是,这项工作需要很长时间才能运行,因为某些clickthrulink_Description有多达数百个观察值。我需要将转置变量限制为6.在SAS中是否有任何方法可以做到这一点并且在运行时方面会更有效吗?

2 个答案:

答案 0 :(得分:2)

您有几个选择。

首先,您可以在输出中使用KEEP语句。

proc transpose in=have out=want(keep=id col1-col6);
by id;
var myvar;
run;

这将限制写入输出数据集的内容,这将大大限制其大小。

您还可以使用options compress=yes;来解决更大问题 - 大量空白数据。这将显着减少存储观察所需的大小,其数量远远少于最大列数。

最后,您可以使用视图来限制事物:

data v_have/view=v_have;
set have;
by id;
if first.id then counter=0;
counter+1;
if counter<6;
run;

proc transpose data=v_have out=want;
by id;
var yourvar;
run;

这只会将每个ID的前六个观察结果传递给转置程序。

答案 1 :(得分:-1)

您可以先通过数据步骤选择6变量:

DATA newClick(obs=6);
SET click;
RUN;

然后使用转置过程和新数据newClick。