SAS dividir macro cadena con delimitador
Me gustaría dar nombres adecuados a las variables en una macro de SAS, sin embargo, obtengo un mensaje de error o solo obtengo la primera letra de la cadena. Aquí hay un ejemplo utilizando los siguientes códigos de SAS:
data trial;
%let cate=gender age;
%let label="Gender*Age at dx";
do i=1 to countw("%str(&cate)");
item=scan("%str(&cate)",i);
print=scan(%str(&label),i,*);
output;
end;
run;
Obtengo el siguiente error:
ERROR 386-185: Se espera una expresión aritmética.
25385 print=scan(%str(&label),i,*);
ERROR 200-322: El símbolo no es reconocido y será ignorado.
ERROR 76-322: Error de sintaxis, la instrucción será ignorada.
Si cambio los códigos de la siguiente manera:
data trial;
%let cate=gender age;
%let label="Gender*Age at dx";
do i=1 to countw("&cate");
item=scan("&cate",i);
print=scan(%str(&label),i);
output;
end;
run;
Obtengo print=Age
en lugar de print='Age at dx'
. ¿Algún consejo al respecto? ¡Gracias!
davy.ai
Para dar nombres adecuados a las variables en una macro de SAS, se puede utilizar la función %str para encerrar el nombre de la variable entre comillas. En el ejemplo proporcionado, la función %str se utiliza solo para encerrar la variable “label”, pero también se debería utilizar para la variable “cate”, de la siguiente manera:
Esto te debería dar los resultados deseados. Al utilizar la función %str, las variables están correctamente encerradas entre comillas, lo que permite que la función scan las interprete correctamente.