Truco SAS. Proc format VS formato percent

11 Mar

El formato SAS percent nos ofrece una apariencia poco habitual a la hora de realizar informes con SAS. Necesitamos emplear el proc format ya que SAS no tiene un formato de porcentajes que se adecúe a los reportes de un buen gestor de la información. Para estudiar su uso emplearemos un ejemplo:

data uno; 
format valor percent.3; 
do valor=-1 to 1 by 0.25; 
output; 
end; 
run; 
proc print data=uno; run;

La ejecución de este programa nos ofrece:

Obs valor
1 (100%)
2 ( 75%)
3 ( 50%)
4 ( 25%)
5 .00%
6 25%
7 50%
8 75%
9 100%

Tenemos 3 problemas: 1. los valores negativos aparecen entre paréntesis 2. no empleamos la notación americana y nuestros decimales han de ir separados por una coma (,) 3. nos pone decimales en el 0. Debido a esta carencia de SAS necesitamos crear un formato a medida para que nuestros informes tengan un aspecto más profesional y empleen notación europea:

proc format ; 
picture porcen 
low-0='0009,0%' (PREFIX="-" MULTIPLIER=1000) 
0='9%' 
0-high='0009,0%'(MULTIPLIER=1000); 
run;  

data uno; 
do valor=-1 to 1 by 0.25; 
output; 
end; 
format valor porcen.; 
run;  

proc print; run;

El resultado obtenido tras esta ejecución:

Obs valor
1 -100,0%
2 -75,0%
3 -50,0%
4 -25,0%
5 0%
6 25,0%
7 50,0%
8 75,0%
9 100,0%

En el proc format hemos empleado la instrucción picture, con ella formateamos cualquier número. Para ello hemos de jugar con las opciones en cada rango del formato. En nuestro ejemplo tenemos 3 rangos, números negativos, 0 y números positivos.En nuestro primer rango del formato low – 0 especificamos con 0009,0% que los valores menores que 0 tengan 5 posiciones de las cuales la última será un %, tendremos un decimal separado con ,. Por otro lado añadimos opciones entre paréntesis para mejorar la apariencia de nuestro valor. Con prefix= especificamos que caracter queremos que preceda a nuestro formato, en este caso, para valores negativos, tendremos un -. Con multiplier=1000 hacemos que nuestros números sean multiplicados para tener la apariencia de -100,0 [= -1] Se multiplican por 1000 debido a que hemos reservado 3 posiciones para la parte entera del número y una posición para la parte decimal, las otras dos posiciónes son para el – y el %.

El segundo rango de nuestro formato es el número 0, a él simplemente le asignamos una posición al número y además es necesario que aparezca el %, no queremos parte decimal.Para el tercer y último rango, los números positivos, 0 – high empleamos las mismas opciones que en la parte negativa pero no ponemos un prefijo. También multiplicamos por 1000 para tener la apariencia 100,0 [=1].IMPORTANTE: Si tenemos porcentajes mayores de 1000% tendremos problemas con este formato, puede que no sea muy habitual pero es necesario tenerlo en cuenta y sería necesario modificar el formato.