<?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 split a column into three columns in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/split-a-column-into-three-columns/m-p/514712#M138810</link>
    <description>&lt;P&gt;Dear all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to split the following column (i.e., table1) into three columns(i.e., table2),&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;table 1
NAME
DYNAMIC COML.FIN. &lt;U&gt;DEAD - DELIST&lt;/U&gt; 23/09/04
THALES (LON) &lt;U&gt;DEAD - DEAD&lt;/U&gt; 28/07/03
EDIRECTORY CO UK &lt;U&gt;DEAD -&lt;/U&gt; 20/05/08
INTERNET TIMES &lt;U&gt;DEAD -&lt;/U&gt; 29/08/03
CYBERES &lt;U&gt;DEAD - DELIST&lt;/U&gt; 24/12/04
MTR CORP. (XSQ) &lt;U&gt;DEAD -&lt;/U&gt; 01/10/08
INTERCEDE GROUP
XPLOITE &lt;U&gt;DEAD - T/O BY 31135W&lt;/U&gt;
TIGER RESOURCE
GALAHAD GOLD &lt;U&gt;DEAD -&lt;/U&gt; 21/02/08
INNOBOX &lt;U&gt;DEAD -&lt;/U&gt; 19/05/08
PORTMAN (LON) &lt;U&gt;DEAD - DELIST&lt;/U&gt; 02/08/04
WARTHOG &lt;U&gt;DEAD -&lt;/U&gt; 13/05/08
LASMO ASSD AGIP INV.CSH
MCBRIDE
SUMITOMO CORP. (UK) LTD
NATIONAL GRID (WI)
IST MOBL.ITAL.ADS (LON) &lt;U&gt;DEAD - DELIST&lt;/U&gt; 06/02/98
IST MOBL.ITAL.SPA (LON) &lt;U&gt;DEAD - DELIST&lt;/U&gt; 03/07/98
ITALGAS (LON) &lt;U&gt;DEAD - DELIST&lt;/U&gt; 03/07/98
MITSUBISHI ESTATES (XSQ) &lt;U&gt;DEAD -&lt;/U&gt; 01/10/08
MITSUBISHI HEAVY (XSQ) &lt;U&gt;DEAD -&lt;/U&gt; 01/10/08
MITSUBISHI MOTORS (XSQ) &lt;U&gt;DEAD -&lt;/U&gt; 01/10/08
MITSUI &amp;amp; COMPANY (XSQ) &lt;U&gt;DEAD -&lt;/U&gt; 01/10/08&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;like&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;table 2
NAME, STATUS, DATE
DYNAMIC COML.FIN., &lt;U&gt;DEAD - DELIST&lt;/U&gt;, 23/09/04
THALES (LON) DEAD, &lt;U&gt;DEAD&lt;/U&gt;, 28/07/03
EDIRECTORY CO UK, &lt;U&gt;DEAD&lt;/U&gt;,  20/05/08
INTERNET TIMES, &lt;U&gt;DEAD&lt;/U&gt;, 29/08/03
CYBERES, &lt;U&gt;DEAD - DELIST&lt;/U&gt;, 24/12/04
MTR CORP. (XSQ), &lt;U&gt;DEAD&lt;/U&gt;, 01/10/08
INTERCEDE GROUP
XPLOITE &lt;U&gt;DEAD - T/O BY 31135W&lt;/U&gt;
TIGER RESOURCE
GALAHAD GOLD, &lt;U&gt;DEAD&lt;/U&gt;, 21/02/08
INNOBOX, &lt;U&gt;DEAD&lt;/U&gt;, 19/05/08&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 20 Nov 2018 11:54:38 GMT</pubDate>
    <dc:creator>France</dc:creator>
    <dc:date>2018-11-20T11:54:38Z</dc:date>
    <item>
      <title>split a column into three columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/split-a-column-into-three-columns/m-p/514712#M138810</link>
      <description>&lt;P&gt;Dear all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to split the following column (i.e., table1) into three columns(i.e., table2),&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;table 1
NAME
DYNAMIC COML.FIN. &lt;U&gt;DEAD - DELIST&lt;/U&gt; 23/09/04
THALES (LON) &lt;U&gt;DEAD - DEAD&lt;/U&gt; 28/07/03
EDIRECTORY CO UK &lt;U&gt;DEAD -&lt;/U&gt; 20/05/08
INTERNET TIMES &lt;U&gt;DEAD -&lt;/U&gt; 29/08/03
CYBERES &lt;U&gt;DEAD - DELIST&lt;/U&gt; 24/12/04
MTR CORP. (XSQ) &lt;U&gt;DEAD -&lt;/U&gt; 01/10/08
INTERCEDE GROUP
XPLOITE &lt;U&gt;DEAD - T/O BY 31135W&lt;/U&gt;
TIGER RESOURCE
GALAHAD GOLD &lt;U&gt;DEAD -&lt;/U&gt; 21/02/08
INNOBOX &lt;U&gt;DEAD -&lt;/U&gt; 19/05/08
PORTMAN (LON) &lt;U&gt;DEAD - DELIST&lt;/U&gt; 02/08/04
WARTHOG &lt;U&gt;DEAD -&lt;/U&gt; 13/05/08
LASMO ASSD AGIP INV.CSH
MCBRIDE
SUMITOMO CORP. (UK) LTD
NATIONAL GRID (WI)
IST MOBL.ITAL.ADS (LON) &lt;U&gt;DEAD - DELIST&lt;/U&gt; 06/02/98
IST MOBL.ITAL.SPA (LON) &lt;U&gt;DEAD - DELIST&lt;/U&gt; 03/07/98
ITALGAS (LON) &lt;U&gt;DEAD - DELIST&lt;/U&gt; 03/07/98
MITSUBISHI ESTATES (XSQ) &lt;U&gt;DEAD -&lt;/U&gt; 01/10/08
MITSUBISHI HEAVY (XSQ) &lt;U&gt;DEAD -&lt;/U&gt; 01/10/08
MITSUBISHI MOTORS (XSQ) &lt;U&gt;DEAD -&lt;/U&gt; 01/10/08
MITSUI &amp;amp; COMPANY (XSQ) &lt;U&gt;DEAD -&lt;/U&gt; 01/10/08&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;like&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;table 2
NAME, STATUS, DATE
DYNAMIC COML.FIN., &lt;U&gt;DEAD - DELIST&lt;/U&gt;, 23/09/04
THALES (LON) DEAD, &lt;U&gt;DEAD&lt;/U&gt;, 28/07/03
EDIRECTORY CO UK, &lt;U&gt;DEAD&lt;/U&gt;,  20/05/08
INTERNET TIMES, &lt;U&gt;DEAD&lt;/U&gt;, 29/08/03
CYBERES, &lt;U&gt;DEAD - DELIST&lt;/U&gt;, 24/12/04
MTR CORP. (XSQ), &lt;U&gt;DEAD&lt;/U&gt;, 01/10/08
INTERCEDE GROUP
XPLOITE &lt;U&gt;DEAD - T/O BY 31135W&lt;/U&gt;
TIGER RESOURCE
GALAHAD GOLD, &lt;U&gt;DEAD&lt;/U&gt;, 21/02/08
INNOBOX, &lt;U&gt;DEAD&lt;/U&gt;, 19/05/08&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 20 Nov 2018 11:54:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/split-a-column-into-three-columns/m-p/514712#M138810</guid>
      <dc:creator>France</dc:creator>
      <dc:date>2018-11-20T11:54:38Z</dc:date>
    </item>
    <item>
      <title>Re: split a column into three columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/split-a-column-into-three-columns/m-p/514713#M138811</link>
      <description>&lt;P&gt;What are the rules used to do this?&lt;/P&gt;</description>
      <pubDate>Tue, 20 Nov 2018 11:56:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/split-a-column-into-three-columns/m-p/514713#M138811</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-11-20T11:56:44Z</dc:date>
    </item>
    <item>
      <title>Re: split a column into three columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/split-a-column-into-three-columns/m-p/514722#M138814</link>
      <description>&lt;P&gt;Post test data in the form of a datastep in future please.&amp;nbsp; I cannot see any logical way to split that data as there is no consistency.&amp;nbsp; I would advise you go back to the source and fix, or get fixed, there.&lt;/P&gt;</description>
      <pubDate>Tue, 20 Nov 2018 12:28:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/split-a-column-into-three-columns/m-p/514722#M138814</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-11-20T12:28:14Z</dc:date>
    </item>
    <item>
      <title>Re: split a column into three columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/split-a-column-into-three-columns/m-p/514744#M138815</link>
      <description>&lt;P&gt;Your three variables are:&amp;nbsp; Name, Status, Date.&lt;/P&gt;
&lt;P&gt;You probably know what statuses are valid - according to your sample any status starts with 'DEAD'.&lt;/P&gt;
&lt;P&gt;Date always start with a number.&lt;/P&gt;
&lt;P&gt;Assuming no name include status string and the order is always Name then Status then Date&lt;/P&gt;
&lt;P&gt;you can try next code:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  infile datalines truncover;
  input a_line $50;
  
  p1 = index(a_line, 'DEAD');         /* status start position */
  p2 = indexc(a_line, '0123456789');  /* date start position */
  
  Name = substr(a_line,1,p1-1);
  Status = substr(a_line,p1,p2-p1);
  Date = input(strip(substr(a_line,p2)),ddmmyy8.);
  format date ddmmyy10.;
  
datalines;
DYNAMIC COML.FIN. DEAD - DELIST 23/09/04
THALES (LON) DEAD - DEAD 28/07/03
EDIRECTORY CO UK DEAD - 20/05/08
INTERNET TIMES DEAD - 29/08/03
CYBERES DEAD - DELIST 24/12/04
MTR CORP. (XSQ) DEAD - 01/10/08
INTERCEDE GROUP
XPLOITE DEAD - T/O BY 31135W
TIGER RESOURCE
GALAHAD GOLD DEAD - 21/02/08
INNOBOX DEAD - 19/05/08
PORTMAN (LON) DEAD - DELIST 02/08/04
WARTHOG DEAD - 13/05/08
LASMO ASSD AGIP INV.CSH
MCBRIDE
SUMITOMO CORP. (UK) LTD
NATIONAL GRID (WI)
IST MOBL.ITAL.ADS (LON) DEAD - DELIST 06/02/98
IST MOBL.ITAL.SPA (LON) DEAD - DELIST 03/07/98
ITALGAS (LON) DEAD - DELIST 03/07/98
MITSUBISHI ESTATES (XSQ) DEAD - 01/10/08
MITSUBISHI HEAVY (XSQ) DEAD - 01/10/08
MITSUBISHI MOTORS (XSQ) DEAD - 01/10/08
MITSUI &amp;amp; COMPANY (XSQ) DEAD - 01/10/08
;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 20 Nov 2018 13:37:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/split-a-column-into-three-columns/m-p/514744#M138815</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2018-11-20T13:37:12Z</dc:date>
    </item>
    <item>
      <title>Re: split a column into three columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/split-a-column-into-three-columns/m-p/514745#M138816</link>
      <description>I see there are some exceptions so the code should be adapted to check is p1=0 (no status) then status should be blank and name=a_line. &lt;BR /&gt;Is it possible to have a date without status ?</description>
      <pubDate>Tue, 20 Nov 2018 13:42:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/split-a-column-into-three-columns/m-p/514745#M138816</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2018-11-20T13:42:26Z</dc:date>
    </item>
    <item>
      <title>Re: split a column into three columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/split-a-column-into-three-columns/m-p/514748#M138819</link>
      <description>&lt;P&gt;Fixed code is:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;&lt;BR /&gt;  keep Name Status Date;&lt;BR /&gt;  length Name $20 status $15;  /* adapt to max expected */&lt;BR /&gt;
  infile datalines truncover;
  input a_line $50;
  
  p1 = index(a_line, 'DEAD');         /* status start position */
  if p1 = 0 then Name = trim(a_line);
  else  Name = substr(a_line,1,p1-1);
  
  p2 = indexc(a_line, '0123');  /* date start position, day is 0n/1n/2n/3n */
  if p1 = 0 or p2=0 then date=.;
  else do:
       Status = substr(a_line,p1,p2-p1);
       Date = input(strip(substr(a_line,p2)),ddmmyy8.);
    end;
  format date ddmmyy10.;
  
datalines;

...........

; run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 20 Nov 2018 13:58:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/split-a-column-into-three-columns/m-p/514748#M138819</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2018-11-20T13:58:13Z</dc:date>
    </item>
  </channel>
</rss>

