Cómo añadir ceros a la izquierda a una variable en SAS

¿Ha intentado alguna vez añadir ceros a la izquierda a una variable SAS, y no lo ha conseguido? No eres el único. La pregunta ¿Cómo añadir ceros a la izquierda en SAS? es una de las preguntas más buscadas en Google en relación con SAS.

Entonces, ¿cómo añadir ceros a la izquierda a una variable de forma correcta? La forma de añadir ceros a la izquierda en SAS depende del tipo de variable. Si es variable numérica, utiliza la sentencia PUT y el formato SAS Zw. Sin embargo, si trabajas con una variable de carácter, se requiere una combinación de la función REPEAT y las funciones CAT para añadir ceros a la izquierda.

En este artículo se explica cómo añadir ceros a la izquierda a una variable numérica y cómo añadir un cero a la izquierda a una variable de carácter. También se comparte método para eliminar ceros a la izquierda en SAS.

¿Cómo añadir ceros a la izquierda a las variables numéricas en SAS?

Como se mencionó anteriormente, agregar ceros a la izquierda a una variable numérica es bastante fácil. Primero, necesita la función PUT para transformar la variable numérica en una variable de carácter. Con el formato Z, se define la longitud final de la nueva variable. Es decir, si utiliza el formato Z5., la nueva variable tendrá una longitud de 5. El número de ceros a la izquierda depende de la longitud de la variable original.

En el siguiente ejemplo, tenemos valores numéricos con diferentes longitudes. El objetivo es crear una nueva variable de longitud 5.


data valores_numericos;
	input valores;
	datalines;
1
22
333
4444
55555
;
run;

data ceros_a_la_izquierda;
	set valores_numericos;
	valores_con_cero_izq = put(valores, z5.);
run;

[video_lightbox_youtube video_id=”kUEAawMhM2s” width=”640″ height=”480″ auto_thumb=”1″]

¿Cómo añadir ceros a la izquierda a las variables de carácter en SAS?

Para las variables de carácter, es un poco más difícil añadir ceros a la izquierda. En primer lugar, necesita saber cuántos ceros necesita añadir a la variable. Crear una nueva cadena de caracteres de estos ceros con la función REPEAT. Por último, necesitas la función CAT para concatenar esta nueva cadena de ceros con tu variable original. El siguiente ejemplo muestra cómo hacerlo.

En el siguiente ejemplo, tenemos una variable de caracteres con valores de diferentes longitudes. El objetivo es crear una nueva variable de longitud 6.

data valores_caracter;
	input valores $;
	datalines;
1A
2BB
3CCC
4DDDD
5EEEEE
;
RUN;

data ceros_a_la_izq_caracter;
	set valores_caracter;
	ceros_valores_caracter_izq = cat(repeat('0',6-length(valores)-1),valores);
run;

[video_lightbox_youtube video_id=”gZiOpzFJ9Dw” width=”640″ height=”480″ auto_thumb=”1″]

¿Cómo añadir ceros a la izquierda a un número almacenado como variable de caracteres?

En el ejemplo anterior, los valores de la variable carácter contienen una combinación de caracteres y números (por ejemplo, “1A”). Sin embargo, si la variable de caracteres está formada sólo por números, y se almacena como una variable de caracteres, añadir ceros a la izquierda es más fácil.

En primer lugar, hay que convertir la variable de carácter en una variable numérica con la función INPUT. A continuación, puede añadir fácilmente ceros a la izquierda con la función PUT y el formato Zw. Mira el siguiente ejemplo.


data valores_numericos_caracter;
	input valores $;
	datalines;
1
22
333
4444
55555
;
run;

data ceros_izq_caracter_numericos;
	set valores_numericos_caracter;
	
	ceros_caracter_numericos_izq = put(input(valores,best12.), z5.);
run;

[video_lightbox_youtube video_id=”NV1_CPIOct0″ width=”640″ height=”480″ auto_thumb=”1″]

¿Cómo eliminar los ceros a la izquierda en SAS?

Aunque probablemente ocurra con menos frecuencia que añadir ceros a la izquierda, a veces es necesario eliminar los ceros a la izquierda. Supongamos un conjunto de datos con variable tipo carácter que contiene ceros a la izquierda. Veamos un método para eliminar estos ceros a la izquierda en SAS.

Variable
0001
00AB
002B

Cabe mencionar que la forma más fácil es convertir la variable tipo carácter en una numérica, multiplicando cada valor por 1. Sin embargo, los valores que contienen caracteres (“01A”) se perderán.

VariableNueva_variable
00011
00AB.
002B.
00022

Una variable carácter con ceros a la izquierda alfanumérica, requiere otra solución. Usar la función COMPRESS para eliminar ceros a la izquierda si todos los datos sólo sólo contiene ceros a la izquierda. Si usas la función de compresión y la cadena contiene ceros en algún lugar dentro de la cadena, entonces estos ceros serán eliminados también.

Un método más robusto para eliminar sólo los ceros a la izquierda es con un reemplazo de coincidencia de patrones. Es decir con expresiones regulares. En SAS, la función PRXCHANGE es utilizada para llevar a cabo esta tarea.

data valores_caracter;
	input valores $;
	datalines;
001
002
0A1
00A
ABC
A0B
;
run;


data eliminar_ceros_izquierda;
	set valores_caracter;
	
	valores_numericos = valores * 1;
	valores_funcion = compress(valores, '0');
	valores_expresion = prxchange('s/^0+//o',-1,valores);
	
run;

[video_lightbox_youtube video_id=”2ZwLpb9Kxps” width=”640″ height=”480″ auto_thumb=”1″]

Resumen

La siguiente tabla proporciona un resumen de cómo añadir y eliminar ceros a la izquierda en SAS. La x representa el nombre de su variable, y la w la longitud de la nueva variable al añadir ceros a la izquierda.

ObjetivoTipo de variableContenidoSolución
Añadir ceros a la izquierdaNúmerosNúmerosPUT(x, Zw.)
Añadir ceros a la izquierdaCarácterCarácter (+ números)CAT(REPEAT(‘0’, w-LENGTH(x)-1),x)
Añadir ceros a la izquierdaCarácterNúmerosPUT(INPUT(x, best12.), Zw.)
Eliminar ceros a la izquierdaCarácterNúmerosx * 1
Eliminar ceros a la izquierdaCarácterCarácter (+ Números)PRXCHANGE(‘s/^0+//o’,-1,x)