Espacios en SAS

Las funciones SAS más habituales para eliminar blancos son las que tenéis en la figura de arriba. Para llegar a ese conjunto de datos SAS hemos ejecutado el siguiente paso data: ```sas data ejemplo; st = " Cuando brilla el sol "; l_st=length(st); output; funcion="COMPRESS "; st1 = compress(st); l_st1=length(st1); output; funcion="COMPBL"; st1 = compbl(st); l_st1=length(st1); output; funcion="TRIM"; st1 = trim(st); l_st1=length(st1); output; funcion="TRIMN"; st1 = trimn(st); l_st1=length(st1); output; funcion="STRIP"; st1 = strip(st); l_st1=length(st1); output; funcion="SRTIP+COMBBL"; st1 = strip(compbl(st)); l_st1=length(st1); output; run; Distintas formas de eliminar espacios dentro de una cadena de caracteres en SAS. Partimos de la variable string » Cuando brilla el sol » y empleamos las siguientes funciones: ...

14 de enero de 2014 · rvaquerizo

Macros SAS. Limpiar una cadena de caracteres

Macro de SAS que he utilizado hoy para limpiar caracteres en una cadena de texto. Está muy limitada y es muy sencilla pero puede serviros: ```sas %macro valida(in,out); length escribe $55.; escribe=""; do i=1 to length(&in.); j=substr(&in.,i,1); if j in ('A','B','C','D','E','F','G','H','I','J','K', 'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','Ñ') then escribe=trim(escribe)||j; else if substr(&in.,i,1)=" " then escribe=trim(escribe)||"-"; else escribe=trim(escribe); drop i j escribe; end; &out.=tranwrd(compress(escribe),"-"," "); %mend; Es bastante mala y limitada, insisto. Si alguien aporta algo se agradecerá. El tema es que recorre una variable alfanumérica carácter a carácter y si no es una letra mayúscula se lo chimpunea sin ningún miramiento, aporta un poco más de talento cuando aparece un espacio en blanco. Ahí va el ejemplo de uso: ...

29 de abril de 2010 · rvaquerizo