Macros SAS宏,用于从csv数据集上的文本文件导入和应用宏

Macros SAS宏,用于从csv数据集上的文本文件导入和应用宏,macros,sas,Macros,Sas,我有一个文本文件“宏定义”,它有两个SAS宏定义。我想导入它们并应用于HTWT.csv数据集。该数据集有20个观察值和6个变量ID、性别、年龄、身高、体重、年份。除性别变量外,所有变量均为数字。我有下面的代码来将宏从txt文件导入并应用到csv文件。我在运行此代码时收到一条错误消息,如下所示 outcsvv是在SAS中导入的HTWT数据集的名称 %include "C:\Users\komal\Desktop\Advanced SAS\Macro definition.txt"; %conten

我有一个文本文件“宏定义”,它有两个SAS宏定义。我想导入它们并应用于HTWT.csv数据集。该数据集有20个观察值和6个变量ID、性别、年龄、身高、体重、年份。除性别变量外,所有变量均为数字。我有下面的代码来将宏从txt文件导入并应用到csv文件。我在运行此代码时收到一条错误消息,如下所示

outcsvv是在SAS中导入的HTWT数据集的名称

%include "C:\Users\komal\Desktop\Advanced SAS\Macro definition.txt";
%contents_of(outcsvv)
%print_data(outcsvv)
Warning:Apparent Invocation of macro "contents_of" not resolved
Error: Unable to complete processing of INCLUDE. Expected a filename or fileref
Expected a statement keyword: found "("
我得到的第二个错误可能是由于文本文件中的宏定义,如下所示

%macro contents_of(name);
proc contents data=&name;
run;
%mend;


%macro print_data(name);
proc print data=&name;
run;
%mend;

请告诉我你对如何解决这个问题的建议。谢谢您的时间。

您可以设置自己的宏。只需分割你的文件;每个文件保存一个宏

或者,您可以将此代码添加到程序的开头:

options insert=(sasautos="/C:\Users\komal\Desktop\Advanced SAS") ;

这将搜索此目录中的宏。

您可以将日志添加到问题中吗?将sas代码放在扩展名为.txt而不是.sas的文件中是不常见的,但在我看来,您的代码应该运行良好。假设它在windows环境下运行,并且SAS会话可以看到桌面上的文件。我不知道你发布的代码是如何生成错误消息的。我会仔细检查Macro Definition.txt的内容。一些建议。。。如果您对宏所做的只是使用它们来包装过程调用,那么您应该停止并重新考虑您正在做的事情。它使其他人更难阅读和使用您的代码,它教会您使用无法移植到其他工作环境的代码,它使调试变得更困难…谢谢。罗伯特,我将听从你的建议。对于这段代码,我必须在练习中使用这些宏。