我无法使用SAS在数据步骤中使用宏创建变量
如果条件不起作用,但正常条件起作用,但不需要正常条件,则执行上述数据步骤宏。 希望仅使用宏条件。请帮帮我我无法使用SAS在数据步骤中使用宏创建变量,sas,sas-macro,Sas,Sas Macro,如果条件不起作用,但正常条件起作用,但不需要正常条件,则执行上述数据步骤宏。 希望仅使用宏条件。请帮帮我 谢谢你…很难说你想做什么。但要开发宏,首先需要从使用SAS代码开始。也许是这样的: data freq;; input placebo ; cards; 3 ; Run; data freqt; set freq; %macro freq1 (arm=,pct=,result=); %if &arm ne .
谢谢你…很难说你想做什么。但要开发宏,首先需要从使用SAS代码开始。也许是这样的:
data freq;;
input placebo ;
cards;
3
;
Run;
data freqt;
set freq;
%macro freq1 (arm=,pct=,result=);
%if &arm ne . %then &pct=&arm*100;
%if &pct ne . %then %do;
%if &pct le 10 %then &result = "test";
%end;
%mend freq1;
%freq1(arm=placebo,pct=pct_pla,result=placebo_);
run;
很难说你想做什么。但要开发宏,首先需要从使用SAS代码开始。也许是这样的:
data freq;;
input placebo ;
cards;
3
;
Run;
data freqt;
set freq;
%macro freq1 (arm=,pct=,result=);
%if &arm ne . %then &pct=&arm*100;
%if &pct ne . %then %do;
%if &pct le 10 %then &result = "test";
%end;
%mend freq1;
%freq1(arm=placebo,pct=pct_pla,result=placebo_);
run;
您混淆了宏语法和数据步骤语法。在宏语法中,只能引用宏变量的内容,而不能引用数据步长变量。因此,如果
&arm
包含变量名安慰剂
,那么您的病情
data freqt;
set freq;
%freq(placebo)
%freq(drug1)
%freq(drug2)
run;
测试文本安慰剂
是否等于
。当然不是,所以这总是错误的
然而,这是可行的:
%if &arm ne . %then ...
因为现在您正在编写数据步骤语法,它允许您访问数据步骤变量sparbo
。现在您将3
与
(或其中的任何内容)进行比较
你还有一些其他的问题;宏定义不应该在数据步骤中(可以把它放在那里,但这样做有点胡说八道),当然你的
pct
逻辑也有同样的问题。你把宏语法和数据步骤语法搞混了。在宏语法中,只能引用宏变量的内容,而不能引用数据步长变量。因此,如果&arm
包含变量名安慰剂
,那么您的病情
data freqt;
set freq;
%freq(placebo)
%freq(drug1)
%freq(drug2)
run;
测试文本安慰剂
是否等于
。当然不是,所以这总是错误的
然而,这是可行的:
%if &arm ne . %then ...
因为现在您正在编写数据步骤语法,它允许您访问数据步骤变量sparbo
。现在您将3
与
(或其中的任何内容)进行比较
你还有一些其他的问题;宏定义不应该在数据步骤中(可以将其放在那里,但这样做有点胡说八道),当然您的
pct
逻辑也有同样的问题。使用options mprint mlogic运行代码你应该能看到错误是什么。兄弟也试过了,但没有。你到底想做什么?将宏定义移出数据步骤,因为将其放在那里只会让您感到困惑。为什么要调用ARM参数设置为句点的宏?这意味着什么?使用选项mprint mlogic运行代码你应该能看到错误是什么。兄弟也试过了,但没有。你到底想做什么?将宏定义移出数据步骤,因为将其放在那里只会让您感到困惑。为什么要调用ARM参数设置为句点的宏?那是什么意思?
if &arm ne . then ...