Splitting a list from a row of a table

Reply
Occasional Contributor
Posts: 13

Splitting a list from a row of a table

How do I split a specific list in a column into individual items?

Let's say I have the columns Time and Greetings, and I want to split whatever is in Greetings for Time = PM.

Assume you don't know how many items will be on the list - greetings for PM could be 1, 2, 3, 4, 5+ etc. items long

Whatever is in Greetings is being referenced by another variable i.e. For PM, list in Greetings is from &PM_items.

where &PM_items. contains "Bye", "Adios", "Goodbye", "See you" - though these items can change.

 

Before:

 

    Time                                   Greetings

     AM                     "Hello", "Hi", "Good morning"

     PM               "Bye", "Adios", "Goodbye", "See you"

     Any                               "How are you"

 

After:

 

    Time                                   Greetings

      AM                    "Hello", "Hi", "Good morning"

     PM1                                     "Bye"

     PM2                                   "Adios"

     PM3                                 "Goodbye"

     PM4                                  "See you"

      Any                               "How are you"

 

/* Maybe something like my attempt at the code? */

Data want;
      Set have;
      If PM ^= ""
For i.&PM_items. to last.&PM_items. do;
&PM_items&i.
next i;
end;
Then output;
Run;
Super User
Posts: 17,750

Re: Splitting a list from a row of a table

No macros needed. 

 

Use COUNTW to determine the number of words. 

Use SCAN() to separate into components. 

 

Your logic is close:  

n_words = countw(....);

Do I=1 to n_words;

    Word = scan(....);

    OUTPUT;

end;
Ask a Question
Discussion stats
  • 1 reply
  • 91 views
  • 1 like
  • 2 in conversation