Tento usar um modelo de gráfico de dispersão que criei dentro de um loop para poder capturar todas as combinações de gráfico, mas vejo que não posso usar a chamada symputX para matrizes. Como posso encontrar uma solução para esses casos?
Acima você pode encontrar um exemplo de gráfico de dispersão para apenas uma combinação.
Obrigada
data work.mycsv;
set work.mycsv;
array temp[3] x y z;
call symputX('temp',temp);
run;
%macro scatter();
%let i = 1;
%do %while (&i <= 3);
%let j = %sysevalf(&i+1);
%do %while(&j <= 3);
%if &i ne &j %then %do;
proc template;
define statgraph scatterplot;
begingraph;
entrytitle "Title";
layout overlay;
scatterplot x=&&temp[&i.] y=&&temp[&j.] /
group=Survived name="scatter" datalabel=Response;
discretelegend "scatter";
endlayout;
endgraph;
end;
%end;
%let j =%sysevalf(&j + 1);
%end;
%let i = %sysevalf(&i + 1);
%end;
%mend scatter;
%scatter();
proc sgrender data=work.mycsv template=scatterplot;
run;
Normalmente, se você deseja armazenar uma lista de valores em variáveis de macro, você deve apenas usar uma string delimitada. Se a lista for de nomes de variáveis, é mais fácil usar o espaço como delimitador.
%let varlist= X Y Z ;
Em seguida, você pode construir facilmente macro lógica para encontrar todas as combinações de duas vias.
%let nitems=%sysfunc(countw(&varlist));
%do i=1 %to %eval(&nitems-1);
%let var1=%scan(&varlist,&i);
%do j=%eval(&i+1) %to &nitems ;
%let var2=%scan(&varlist,&j);
....
%end;
%end;
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras