es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

SAS: ¿Cómo obtener el valor de una tabla en base al valor de otra variable, y asignarlo a una macro variable?

Tengo un conjunto de datos que se refiere a cambios de estado. A partir de esa tabla, luego he creado una tabla PROC FREQ que cuenta el número de veces que aparece un estado particular y he guardado eso en un archivo de trabajo. A continuación se muestra cómo se ve la tabla PROC FREQ generada:

Estado COUNT PORCENTAJE
Exitoso 500 0.8
Sin éxito 100 0.16
Desconocido 25 0.04

Al observar la tabla PROC FREQ generada, cuando el estado es igual a “Exitoso”, quiero tomar el valor correspondiente de PORCENTAJE y asignarlo a una macro variable para poder referirme a ese valor en un momento posterior.

He leído un poco sobre los procedimientos SYMGET/SYMPUT, aunque no sé lo suficiente como para saber si son apropiados.

Tengo la intención de utilizar ese valor de la macro variable dentro de una función de macro, si el valor de la macro variable está por encima de cierto valor, entonces llevar a cabo un código adicional.

%macro condición;

%if &pctval >0.5 %then %do;

Procedimiento…

%else %do;

Procedimiento…

run;

%end;

Tags:  ,

Answer

  1. Avatar for davy.ai
    Para asignar el valor PORCENTAJE correspondiente a una variable de macro, puedes usar la función SYMPUTX en SAS. Aquí tienes un ejemplo de código:
    
    

    /* Obtener el valor PORCENTAJE donde el estado es “Exitoso” */
    data exitosos;
    set tabla_frec;
    where estado = “Exitoso”;
    call symputx(‘valporc’, porcentaje);
    run;

    /* Verificar si la variable de macro excede el umbral /
    %macro condicion;
    %if &valporc > 0.5 %then %do;
    /
    Código adicional si se cumple la condición /
    %end;
    %else %do;
    /
    Código adicional si no se cumple la condición */
    %end;
    %mend;
    “`

    En el código anterior, creamos un nuevo conjunto de datos llamado “exitosos” que filtra la tabla original PROC FREQ basada en el estado “Exitoso”. Luego, usamos la función SYMPUTX para asignar el valor PORCENTAJE correspondiente a una variable de macro llamada “valporc”.

    Finalmente, usamos la variable de macro “valporc” en la declaración %if dentro de la función de macro “condicion” para ejecutar código adicional basado en un umbral determinado.

Comments are closed.