我想在我的情节中添加if语句来更改不同场景中的标题。 我知道我在第一个sgplot中的代码不会起作用。我们有类似的东西吗?
%let group = A B C;
/*something I want but didn't work*/
proc sgplot data=input_data ;
series x=num_accounts y=income;
if length(&group.)=2 then
title "VAR1=5 and VAR2=4";
else if length(&group.)=1 then
title "VAR1=5";
run;
/*plot without if statement */
proc sgplot data=input_data ;
series x=num_accounts y=income;
title "VAR1=5";
run;
答案 0 :(得分:0)
由于您只是在宏%if
中检查宏变量的长度,是的,它是可能的。但至少你必须有一个宏包装器。
%macro plot_me(group=);
%if %length(&group.)=2 %then %do;
title "VAR1=5 and VAR2=4";
%end;
%else %if %length(&group.)=1 %then %do;
title "VAR1=5";
%end;
proc sgplot data=sashelp.class ;
series x=age y=height;
run;
%mend plot_me;
%let group=A B C;
%plot_me(group=&group.);
ODS Graphics / SGPLOT中的其他选项包括属性映射和注释,这两个选项都是由datastep驱动的,因此可能用于更复杂的条件。
你也可以使用图形模板语言(GTL),如果你正在进行更复杂的事情,我会认为你会提供更多的选择。这确实允许你写"如果"一种陈述。
宏语言是您所呈现的特定示例的正确位置,但GTL或属性地图可能更适合实际示例,具体取决于您正在执行的操作。