宏函数中的数据步骤
Data step inside macro function
我有一系列类似的文件,我需要从中创建 SAS 数据集。我想制作一个宏,将文件名作为参数,可以输出一个数据步骤。这在理论上可能吗?
我是 SAS 的新手,我做了这个简单的例子:
%macro computeFormAndDomain(formName, domainName);
data thing;
input Name $;
datalines;
Bob
Jill
;
run;
%mend;
%computeFormAndDomain("test", "test2");
proc print data=thing;
run;
但是这会返回错误“错误:宏 COMPUTEFORMANDDOMAIN 为数据步骤生成了 CARDS(数据行),这可能会导致不正确的结果。该
DATA 步,宏将停止执行。”需要进行哪些更正,或者是否有更好的方法来实现我想要的?
根据规则,您不能在宏中使用 CARDS/DATALINES。您需要将信息作为已构建的数据集(或其他方式)提供给宏。例如,参见 this thread 讨论该问题。
我有一系列类似的文件,我需要从中创建 SAS 数据集。我想制作一个宏,将文件名作为参数,可以输出一个数据步骤。这在理论上可能吗?
我是 SAS 的新手,我做了这个简单的例子:
%macro computeFormAndDomain(formName, domainName);
data thing;
input Name $;
datalines;
Bob
Jill
;
run;
%mend;
%computeFormAndDomain("test", "test2");
proc print data=thing;
run;
但是这会返回错误“错误:宏 COMPUTEFORMANDDOMAIN 为数据步骤生成了 CARDS(数据行),这可能会导致不正确的结果。该 DATA 步,宏将停止执行。”需要进行哪些更正,或者是否有更好的方法来实现我想要的?
根据规则,您不能在宏中使用 CARDS/DATALINES。您需要将信息作为已构建的数据集(或其他方式)提供给宏。例如,参见 this thread 讨论该问题。