永久保存修改后的数据集

时间:2017-09-28 15:22:09

标签: sas directory dataset permanent

我知道这是一个非常基本的问题但我的代码在尝试运行我通过帮助文档找到的内容时仍然失败。

到目前为止,我一直在运行.WORK目录下的分析项目,据我所知,每次会话结束时都会被删除。我做了大量的数据清理和准备工作,并且在开始分析之前不想每次都这样做。

所以我理解,从阅读本文:https://support.sas.com/documentation/cdl/en/basess/58133/HTML/default/viewer.htm#a001310720.htm我必须将清理后的数据集输出到非临时目录。

到目前为止我采取的步骤: 1)创建了一个名为" Project" 2)将它保存在我所拥有的文件夹中"我的文件夹"在SAS 3)我的代码用于将清理的数据集保存到"项目"库如下:

PROC SORT DATA=FAA_ALL NODUPKEY;
BY GROUND_SPEED;
DATA PROJECT.FAA_ALL;
RUN;

然后我在一个新程序中运行此代码:

PROC PRINT DATA=PROJECT.FAA_ALL;
RUN;

它表示没有观察结果,数据集基本上是空的。

有人可以告诉我哪里出错了吗?

2 个答案:

答案 0 :(得分:4)

您的问题是PROC SORT

PROC SORT DATA=FAA_ALL NODUPKEY;
BY GROUND_SPEED;
DATA PROJECT.FAA_ALL;
RUN;

应该是

PROC SORT DATA=FAA_ALL OUT= PROJECT.FAA_ALL NODUPKEY;
BY GROUND_SPEED;
RUN;

DATA PROJECT.FAA_ALL开始创建空白数据集的数据步骤。

答案 1 :(得分:2)

还有一些值得一提的事情:您的数据步骤没有达到预期的效果,因为您没有设置声明。您的代码相当于:

PROC SORT DATA=WORK.FAA_ALL NODUPKEY;
BY GROUND_SPEED;
RUN;

DATA PROJECT.FAA_ALL;
 SET _NULL_;
RUN;

PROJECT.FAA_ALL为空,因为没有读入任何内容。

SORT过程隐式对数据集就地进行排序。您可以让SAS通过将set语句添加到数据步骤来移动已排序的数据:

PROC SORT DATA=WORK.FAA_ALL NODUPKEY;
BY GROUND_SPEED;
RUN;

DATA PROJECT.FAA_ALL;
 SET WORK.FAA_ALL;
RUN;

但是,这仍然需要两个步骤,并且需要额外的磁盘I / O.在SAS过程中使用out选项(如在DomPazz的回答中)几乎总是比仅使用数据步骤移动数据更快更有效。