Dividir en palabras un texto con SAS

Una duda que planteó una lectora del blog acerca de separar una cadena de caracteres separados por comas y crear observaciones en otra variable:
 Hola! he buscado por toda la página, necesito ayuda urgente. Mi problema es el siguiente.

Necesito separar una cadena de texto en una fila en varias filas, por ejemplo

cadena1,cadena2,cadena3

en

cadena1
cadena2
cadena3

para encontrar la ' , ' utilizo scan, aunque podría ocupar anypunct para que encuentre la primera ' , ' luego la segunda ' , ' etc y cortar con substr, longth ... pero bueno, ya que tengo un metodo de separar el texto de la fila como hago para que cada palabra este en una nueva fila? ojala me hayan entendido y me den una idea de como hacer eso en un proc sql, con una macro o como sea, solo una pequeña orientación me serviria mucho, gracias!!!!!

En realidad teníamos una entrada que podía haberte servido de referencia:

http://analisisydecision.es/el-debate-politico-o-como-analizar-textos-con-wps/

Con esta idea podemos proponer hacer:

data frase;
frase = "cadena1,cadena2,cadena3";
run;

data palabras;
set frase end=fin;
drop i letra;
length palabra $50;
palabra="";
do i = 1 to length(frase);
letra=substr(frase,i,1);
if letra not in (",") then palabra=compress(palabra||letra);
else do;
output;
palabra="";
end;end;
if fin then output;
run;

Se trata de ir caracter a caracter y volcarlo a una nueva variable en el momento que encuentra la coma y realizar un output en ese momento. Saludos.

2 comentarios en “Dividir en palabras un texto con SAS

  1. Una alternativa es la siguiente:

    data palabras(keep=palabra frase);
    set frase;
    length palabra $50;
    palabra=”Test”;
    do while (palabra NE “”); i+1;
    palabra=scanq(frase,i,”,”);
    if palabra NE “” then output;
    end;
    run;

    Abreviado es :
    1. extraer la palabra1 (la que sea) que este en una frase en la posicion 1 entre el delimitador “,”
    2. extraer la palabra2 que esté en la posicion 2 ….
    3.extraer la palabra3 …..

    hasta que nos devuelva que no hay mas palabras…

    Saludos

  2. Gracias por la explicacion, pero cuando correo esta funcion la ultima palara del texto no me la esta poniendo. me podrian ayudarme a indicar porque.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

[bws_google_captcha]