我每月运行一些sas查询,并将数据导出到特定文件夹。问题是我必须在运行代码之前手动创建这些文件夹,以便SAS不会出错。在SAS中制作目录(Windows)
有什么办法可以自动化吗?
我的文件夹都以这种方式被命名为:
月的号 - 月年的名称(12 - 2011年12月)。我也想创建一个名为Excel的子文件夹。
还有什么方法可以自动填充月份和数字...所以当我在1月份运行它时,它会变为(2012年1月1日)?
我每月运行一些sas查询,并将数据导出到特定文件夹。问题是我必须在运行代码之前手动创建这些文件夹,以便SAS不会出错。在SAS中制作目录(Windows)
有什么办法可以自动化吗?
我的文件夹都以这种方式被命名为:
月的号 - 月年的名称(12 - 2011年12月)。我也想创建一个名为Excel的子文件夹。
还有什么方法可以自动填充月份和数字...所以当我在1月份运行它时,它会变为(2012年1月1日)?
但是,如果您处于企业指南环境中(我不相信),则默认情况下它在9.2中是允许的。我觉得9.3会在默认情况下,允许它在本地环境(SAS DUMMY blog)
例子:
options noxwait;
data _null_;
month=strip(put(month(today()),2.));
year=strip(put(year(today()),4.));
monname=put(today(),monname3.);
dir_name=month !! " - " !! monname !! " " !! year;
call symputx('dir_name',dir_name);
run;
%put &dir_name;
x "cd D:\Data";
x "%str(mkdir %"&dir_name%")";
另一种选择是DCREATE功能
例子:
data _null_;
month=month(today());
year=year(today());
dir_name=put(month,2.) !! " - " !! put(today(),monname3.) !! " " !! put(year,4.);
NewDirectory=dcreate(dir_name,'D:\Data\');
run;
这是一个简单的解决方案,如果不存在和使用,如果存在。 代码片段如下:
%Macro Verifica_Lib(Libreria,Ruta);
Data _Null_;
Call Symput('Destino',&Ruta||Compress('&Libreria'));
Run;
%Put &Destino;
%If (%SysFunc(LibRef(&Libreria))) Ne 0 %Then %Do;
%Put Verificando existencia de libreria;
%Put La libreira &Libreria No Existe;
%Put Se procederaa crearla;
Options DLCreateDir;
LibName &Libreria "&Destino";
%End;
%Else %Do;
%Put Verificando existencia de libreria;
%Put La libreira &Libreria existe;
%Put Se continuara el proceso;
%End;
%Error_Sas(Verificacion de Libreria local);
%MEnd Verifica_Lib;
谢谢!据我了解..这将在数据文件夹中创建一个名为New_Dir的目录....有没有办法让它自动获取当前的月份数量/月份名称和年份?例如。 (01 - 2012年1月) – Adam 2012-01-31 16:36:17
此外,这似乎只适用于本地驱动器。我将如何修改它,使其适用于网络驱动器? – Adam 2012-01-31 16:44:15
我更新了我的答案。如果通过“网络驱动器”表示映射的驱动器......那么您仍应该能够以相同的方式引用它们(K:\或X:\)...如果您想在服务器上执行此操作,请发布更多信息 – 2012-01-31 17:06:37