如何使用 SAS 删除包含 SAS 数据集的外部文件夹

Posted

技术标签:

【中文标题】如何使用 SAS 删除包含 SAS 数据集的外部文件夹【英文标题】:How to delete external folders containing SAS datasets, using SAS 【发布时间】:2018-09-16 11:49:51 【问题描述】:

在驱动器中,我有文件夹(按日期计算),每个文件夹包含 1 个 SAS 文件。我的预期是只保留 13 个月的数据(只有 13 个月的文件夹)并删除驱动器中的任何其他旧文件夹。我们有它的代码还是有什么其他的帮助?

【问题讨论】:

请展示您的尝试,并据此为您指明正确的方向。 文件管理有很多功能。查看 FDELETE 的文档。您可能想退后一步,多考虑一下您的预期,它将日历分组数据分成单独的文件夹或数据集。如果您可以再添加一列“月”,则可以将所有数据(可能相同的结构)作为单个数据集进行堆叠和管理,并使用CLASSBYWHERE 语句进行处理 为什么每个数据集都有单独的文件夹?这似乎很愚蠢。 【参考方案1】:

以下宏将删除整个文件夹和所有子目录(递归地) - 它通过提取内容并从底部向上删除所有文件来做到这一点。

https://core.sasjs.io/mp__deletefolder_8sas.html

测试在这里:https://core.sasjs.io/mp__deletefolder_8test_8sas_source.html

【讨论】:

【参考方案2】:

使用FDELETEDELETE 来执行此操作,另一个有用的函数是FEXIST,它检查文件是否物理存在。上面链接中的 sas 文档有很好的例子。

删除目录示例:文件夹不为空不会被删除

%let TargetPath=c:\data\temp\Folder;
FILENAME FMyRep "&TargetPath";
%LET rc=%SYSFUNC(FDELETE(FMyRep));
%PUT rc=&rc;
FILENAME FMyRep CLEAR;

原帖here.

【讨论】:

以上是关于如何使用 SAS 删除包含 SAS 数据集的外部文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Lesson 1 数据集的建立

sas如何计算相邻观测的差值

来自 SAS 数据集的 Oracle 表

SAS 操作数据集的观测

SAS 对数据的拼接与串接

根据来自另一个数据集的 PROC SQL 的结果更新 SAS 数据集