Continúo comentando algunas funciones de SAS para utilizar con cadenas de texto. Existen muchas más que estas que menciono, pero estas me parecen más interesantes.
Este bloque de funciones tratan la cadena de texto dando como salida un número que bien indica una posición o un tamaño de la cadena. Lo veremos utilizando este ejemplo:
%let cad = ' En 1 lugar de la Mancha... ';
Función | Resultado | Comentario |
---|---|---|
count(&cad, ‘a’) | 4 | Devuelve el número de veces que aparece un carácter en una cadena dada. En el caso del ejemplo se busca contar el número de aes en la cadena. |
length(&cad) | 31 | Devuelve el número de caracteres totales de la cadena que se indica. |
anydigit(&cad) | 6 | Devuelve un número que representa la posición del primer dígito que aparezca en una cadena que le hemos indicado. |
anyalpha(&cad) | 3 | Esta función hace lo mismo que la anterior, pero buscando el primer carácter de la cadena. |
anypunct(&cad) | 27 | Finalmente, esta función hace lo mismo que las anteriores buscando signos de puntuación u otros caracteres no alfanuméricos. Como se puede ver en el ejemplo, los espacios no se consideran signos de puntuación, así que la posición que está devolviendo la función aquí es la del primer punto del final. |
A continuación vamos a profundizar un poco en las distintas variantes de las funciones del tipo index
que ya hemos visto en la entrada anterior. Existen 3 funciones de este tipo que son interesantes, creo, para procesar texto: index, indexc, indexw
y las explicamos a continuación con el siguiente ejemplo de cadena:
%let cad = 'He quedado el 1º, por lo que estoy muy contento';
Función | Resultado | Comentario |
---|---|---|
index(&cad, ‘que’) | 4 | Devuelve la posición de la primera ocurrencia de la subcadena indicada. La subcadena tiene que ser exactamente igual en mayúsculas y minúsculas. Puede encontrar esa ocurrencia como palabra independiente o como parte de una palabra mayor. |
indexw(&cad, ‘que’) | 26 | Devuelve la posición de la subcadena indicada, siempre que se encuentre como una palabra independiente. |
indexc(&cad, ‘0123456789’) | 15 | Devuelve la posición del primero de los caracteres que encuentre incluido en la lista que aparece en el segundo parámetro. Esta función así expresada es equivalente al ejemplo que he dado para la función anydigit() del bloque anterior. |
Finalmente, una curiosidad, la función reverse(cadena) que reordena los caracteres que la componen invirtiendo su orden. El último carácter pasará a ser el primero; el penúltimo será el segundo y así sucesivamente. Nunca la he utilizado, no imagino cómo, pero me resulta una curiosidad.
Si tenéis cualquier duda que queráis dirigirme, escribid un comentario y os contestaré con una solución.