Un lector del blog preguntaba cómo obtener el valor máximo dentro de un registro, por fila, de una sucesión de variables carácter; evidentemente la función max no servía porque es específica para variables numéricas. La duda la planteaba del siguiente modo:
Pero tengo una duda que no soy capaz de sacar y no veo ninguna cosa parecida para poder sacarlo, a ver si me puedes ayudar, o si no, pues me dices que no y no hay ningún problema.
Tengo un data de este estilo:
Nombre Clave1 Clave2 Clave3 Ana A A B Pepe H M C Juan A A A El tema es que necesito calcular el máximo de todas las claves para cada persona, es decir:
Nombre Clave1 Clave2 Clave3 Max Ana A A B B Pepe H M C M Juan A A A A Como son letras, no me funciona el
maxen elproc sqly tampoco sé ninguna función que pueda pasarme las letras a numéricas. Está claro que la única manera que se me ocurre es transformando las letras a números con uncase, hacer el máximo y después transformarlo otra vez a letras, pero es por si sabes alguna manera mejor de hacerlo.
La solución que le planteo se realiza con un array donde seleccionamos sólo las variables clave:
data datos;
length Nombre $10 Clave1 Clave2 Clave3 $1;
input Nombre $ Clave1 $ Clave2 $ Clave3 $;
datalines;
Ana A A B
Pepe H M C
Juan A A A
;
run;
data datos_max;
set datos;
array cl (*) Clave:;
maximo = cl(1);
do i = 1 to dim(cl);
if cl(i) > maximo then maximo = cl(i);
end;
drop i;
run;
Inicializamos el maximo al primer elemento del array y vamos recorriendo las variables; si una es mayor que la otra, se modifica el maximo. Espero que le sirva a algún otro lector. Saludos.