Esta macro está diseñada para ser invocada dentro de un DATA Step. Analiza una variable fuente (`var`) para detectar la presencia de dígitos. Si hay dígitos presentes, construye una variable de ordenación (`ordVar`) normalizando los segmentos numéricos (probablemente separados por puntos). Utiliza un bucle de macro para generar instrucciones `tranwrd` que añaden ceros no significativos (relleno) a los dígitos del 0 al 9 rodeados de puntos, permitiendo así una ordenación alfanumérica coherente (ej: tratar '1.2' como inferior a '1.10').
Análisis de datos
Type : CREATION_INTERNE
El código define una macro de software y no carga ni manipula directamente datos externos durante su compilación.
1 Bloque de código
MACRO
Explicación : Definición de la macro `AHGaddordvar`. Genera una lógica condicional `IF` para el DATA Step. Transforma la cadena duplicando los delimitadores '.' y añadiendo un prefijo '0' a los dígitos únicos encontrados entre estos delimitadores para estandarizar el formato de ordenación.
¡Copiado!
%macro AHGaddordvar(var,ordVar);
%local i;
if anydigit(&var) then
do;
&ordvar='..'||trim(substr(tranwrd(&var,'.','..'),anydigit(&var)))||'..';
%do i=0 %to 9;
&ordvar=tranwrd(&ordvar,".&i..",".0&i..");
%end;
&ordvar=substr(&var,1,anydigit(&var)-1)||&ordvar;
end;
%mend;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.