我正在使用
转置一个包含数百万个观察结果的文件proc transpose data=click out=CLICK_transp name=test prefix=var;
by ComlogId;
var clickthrulink_Description;
run;
但是,这项工作需要很长时间才能运行,因为某些clickthrulink_Description有多达数百个观察值。我需要将转置变量限制为6.在SAS中是否有任何方法可以做到这一点并且在运行时方面会更有效吗?
答案 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。