发出组合文本以在 SAS 中创建一个 libname 地址
Issue combining text to make a libname address in SAS
我想将数据集保存到 excel 并让它保存包含当前日期的文件名。
为了缩小问题的范围,我正在寻找将 excel 保存到通过将这三件事组合在一起而形成的路径的代码:'/sas/myPath/results'、'3-22-2018'和'.xlsx'。
我不能只说:
%let filePath = '/sas/myPath/results3-22-2018.xlsx';
因为日期会动态更新。
错误是引用 cat 函数的 libname。关于如何解决此问题的任何想法?
/*Set File Path*/
data _null_;
%let filePath = cats('/sas/myPath/results', '3-22-2018', '.xlsx');
run;
/*Output to excel*/
libname excelOut XLSX &filePath;
data excelOut.Sheet1;
set results;
run;
libname excelOut clear;
不需要使用任何函数来连接宏代码中的文本。宏代码中的一切都是文本。只需在要在生成的代码中使用其值的位置展开宏变量。
%let datestr=3-22-2018;
%let filePath = "/sas/myPath/results&datestr..xlsx";
如果您要构建带引号的字符串,请确保使用双引号而不是单引号。宏处理器不会在单引号内扩展宏触发器。请注意,宏处理器在宏变量名称后使用句点来指示名称的结尾。因此,要显示实际经期,您需要其中两个。一个供宏处理器使用,另一个将成为生成值的一部分。
另请记住,宏处理器执行其工作并将生成的代码传递给 SAS。所以你的第一个数据步骤将真正按照这个顺序执行。
%let filePath = cats('/sas/myPath/results', '3-22-2018', '.xlsx');
data _null_;
run;
请注意,您的数据步骤实际上什么也没做,也不需要。
我想将数据集保存到 excel 并让它保存包含当前日期的文件名。
为了缩小问题的范围,我正在寻找将 excel 保存到通过将这三件事组合在一起而形成的路径的代码:'/sas/myPath/results'、'3-22-2018'和'.xlsx'。
我不能只说:
%let filePath = '/sas/myPath/results3-22-2018.xlsx';
因为日期会动态更新。 错误是引用 cat 函数的 libname。关于如何解决此问题的任何想法?
/*Set File Path*/
data _null_;
%let filePath = cats('/sas/myPath/results', '3-22-2018', '.xlsx');
run;
/*Output to excel*/
libname excelOut XLSX &filePath;
data excelOut.Sheet1;
set results;
run;
libname excelOut clear;
不需要使用任何函数来连接宏代码中的文本。宏代码中的一切都是文本。只需在要在生成的代码中使用其值的位置展开宏变量。
%let datestr=3-22-2018;
%let filePath = "/sas/myPath/results&datestr..xlsx";
如果您要构建带引号的字符串,请确保使用双引号而不是单引号。宏处理器不会在单引号内扩展宏触发器。请注意,宏处理器在宏变量名称后使用句点来指示名称的结尾。因此,要显示实际经期,您需要其中两个。一个供宏处理器使用,另一个将成为生成值的一部分。
另请记住,宏处理器执行其工作并将生成的代码传递给 SAS。所以你的第一个数据步骤将真正按照这个顺序执行。
%let filePath = cats('/sas/myPath/results', '3-22-2018', '.xlsx');
data _null_;
run;
请注意,您的数据步骤实际上什么也没做,也不需要。