<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Split as row when encounter semicolon in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Split-as-row-when-encounter-semicolon/m-p/706040#M216671</link>
    <description>&lt;P&gt;Use a DO loop and the SCAN() function.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  infile cards truncover;
  input name :$10. role :$10. comment $200.;
cards4;
User1 clerk Oncology;Infectious disease;Cardiovascular disease;Respiratory;
User2 srclerk . 
User4 peon Oncology;Immune;
User5 manager Oncology;Neurosciences;Immunology;Infectious disease;Dermatology;Rare Diseases - Multiple Indications, Multiple Disease areas;
;;;;
data want;
  set have;
  do item=1 to max(1,countw(comment,';'));
    area = scan(comment,item,';');
    if area ne ' ' or item=1 then output;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Results:&lt;/P&gt;
&lt;PRE&gt;Obs    name     role       item    area

  1    User1    clerk        1     Oncology
  2    User1    clerk        2     Infectious disease
  3    User1    clerk        3     Cardiovascular disease
  4    User1    clerk        4     Respiratory
  5    User2    srclerk      1
  6    User4    peon         1     Oncology
  7    User4    peon         2     Immune
  8    User5    manager      1     Oncology
  9    User5    manager      2     Neurosciences
 10    User5    manager      3     Immunology
 11    User5    manager      4     Infectious disease
 12    User5    manager      5     Dermatology
 13    User5    manager      6     Rare Diseases - Multiple Indications, Multiple Disease areas&lt;/PRE&gt;</description>
    <pubDate>Tue, 15 Dec 2020 15:05:58 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2020-12-15T15:05:58Z</dc:date>
    <item>
      <title>Split as row when encounter semicolon</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Split-as-row-when-encounter-semicolon/m-p/706035#M216670</link>
      <description>&lt;P&gt;Hi All,&lt;BR /&gt;From the below master table, I need to split word as separate row when encounter semicolon with same name and role.&amp;nbsp;&lt;/P&gt;&lt;P&gt;After that, I need to match comment column from master dataset with area column of labelling dataset. If matches,&amp;nbsp;same text will be placed, if not then "Other" should populate (e.g.User4). For blank it should be kept as it is.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am not aware how to keep the data when multiple semicolon available. I just placed raw data.&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data master;
length comment $ 200;
input name $ role $ comment $;
cards;
User1 clerk Oncology;Infectious disease;Cardiovascular disease;Respiratory;
User2 srclerk . 
User4 peon Oncology;Immune;
User5 manager Oncology;Neurosciences;Immunology;Infectious disease;Dermatology;Rare Diseases - Multiple Indications, Multiple Disease areas;
run;

data labelling;
input area $200.;
cards;
Immunology
Infectious disease
Dermatology&lt;BR /&gt;Cardiovascular disease
Rare Diseases - Multiple Indications, Multiple Disease areas
Vaccines
;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;My expected output&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;name&lt;/TD&gt;&lt;TD&gt;role&lt;/TD&gt;&lt;TD&gt;comment&lt;/TD&gt;&lt;TD&gt;flag&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;User1&lt;/TD&gt;&lt;TD&gt;clerk&lt;/TD&gt;&lt;TD&gt;Oncology&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;User1&lt;/TD&gt;&lt;TD&gt;clerk&lt;/TD&gt;&lt;TD&gt;Infectious disease&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;User1&lt;/TD&gt;&lt;TD&gt;clerk&lt;/TD&gt;&lt;TD&gt;Cardiovascular disease&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;User1&lt;/TD&gt;&lt;TD&gt;clerk&lt;/TD&gt;&lt;TD&gt;Other&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;User2&lt;/TD&gt;&lt;TD&gt;srclerk&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;User4&lt;/TD&gt;&lt;TD&gt;peon&lt;/TD&gt;&lt;TD&gt;Oncology&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;User4&lt;/TD&gt;&lt;TD&gt;peon&lt;/TD&gt;&lt;TD&gt;Other&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;User5&lt;/TD&gt;&lt;TD&gt;manager&lt;/TD&gt;&lt;TD&gt;Oncology&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;User5&lt;/TD&gt;&lt;TD&gt;manager&lt;/TD&gt;&lt;TD&gt;Neurosciences&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;User5&lt;/TD&gt;&lt;TD&gt;manager&lt;/TD&gt;&lt;TD&gt;Immunology&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;User5&lt;/TD&gt;&lt;TD&gt;manager&lt;/TD&gt;&lt;TD&gt;Infectious disease&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;User5&lt;/TD&gt;&lt;TD&gt;manager&lt;/TD&gt;&lt;TD&gt;Dermatology&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;User5&lt;/TD&gt;&lt;TD&gt;manager&lt;/TD&gt;&lt;TD&gt;Rare Diseases - Multiple Indications, Multiple Disease areas&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Dec 2020 14:52:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Split-as-row-when-encounter-semicolon/m-p/706035#M216670</guid>
      <dc:creator>abraham1</dc:creator>
      <dc:date>2020-12-15T14:52:30Z</dc:date>
    </item>
    <item>
      <title>Re: Split as row when encounter semicolon</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Split-as-row-when-encounter-semicolon/m-p/706040#M216671</link>
      <description>&lt;P&gt;Use a DO loop and the SCAN() function.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  infile cards truncover;
  input name :$10. role :$10. comment $200.;
cards4;
User1 clerk Oncology;Infectious disease;Cardiovascular disease;Respiratory;
User2 srclerk . 
User4 peon Oncology;Immune;
User5 manager Oncology;Neurosciences;Immunology;Infectious disease;Dermatology;Rare Diseases - Multiple Indications, Multiple Disease areas;
;;;;
data want;
  set have;
  do item=1 to max(1,countw(comment,';'));
    area = scan(comment,item,';');
    if area ne ' ' or item=1 then output;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Results:&lt;/P&gt;
&lt;PRE&gt;Obs    name     role       item    area

  1    User1    clerk        1     Oncology
  2    User1    clerk        2     Infectious disease
  3    User1    clerk        3     Cardiovascular disease
  4    User1    clerk        4     Respiratory
  5    User2    srclerk      1
  6    User4    peon         1     Oncology
  7    User4    peon         2     Immune
  8    User5    manager      1     Oncology
  9    User5    manager      2     Neurosciences
 10    User5    manager      3     Immunology
 11    User5    manager      4     Infectious disease
 12    User5    manager      5     Dermatology
 13    User5    manager      6     Rare Diseases - Multiple Indications, Multiple Disease areas&lt;/PRE&gt;</description>
      <pubDate>Tue, 15 Dec 2020 15:05:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Split-as-row-when-encounter-semicolon/m-p/706040#M216671</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2020-12-15T15:05:58Z</dc:date>
    </item>
  </channel>
</rss>

