Macros (fáciles) de SAS. Normaliza un texto rápido

¿Tienes que normalizar un texto con SAS? Llevas dos horas buscando funciones de texto con la ayuda y te has crispado. En una macro y de forma muy rápida, os planteo un muestrario de funciones con las que podéis normalizar (un poco) un texto. Ésto es algo que tuve que hacer la otra mañana; no es muy sofisticado pero puede seros de utilidad: %macro prepara(varib); &varib. = translate(&varib., "AEIOU", "ÁÉÍÓÚ"); &varib. = tranwrd(&varib., "NUM", "NUMERO"); &varib. = tranwrd(&varib., "CONT", "CONTABLE"); &varib. = tranwrd(&varib., "IMP ", "IMPORTE "); &varib. = tranwrd(&varib., " POR ", " "); &varib. = tranwrd(&varib., " DE ", " "); &varib. = tranwrd(&varib., " EN ", " "); &varib. = tranwrd(&varib., " LOS ", " "); &varib. = tranwrd(&varib., " AL ", " "); &varib. = tranwrd(&varib., " EL ", " "); &varib. = tranwrd(&varib., " ULTIMOS 12 ", " 12 "); &varib. = tranwrd(&varib., " ULTIMOS 3 ", " 3 "); &varib. = tranwrd(&varib., " ULTIMO MES ", " MES "); &varib. = tranwrd(&varib., " TRANSACCIOENES ", " TRANSACCIONES "); call prxchange(prxparse('s/([A-ZÑa-zñ 0-9]*)([^A-Za-zÑñ 0-9]*)/$1/'), -1, &varib.); %mend; En realidad es una sucesión de TRANWRD, pero destacaría el uso de la función TRANSLATE para eliminar tildes en nuestras vocales y el uso de CALL PRXCHANGE, del que ya tuvimos un aperitivo hace tiempo. ...

8 de noviembre de 2010 · 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: %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