<?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 Splitting address by separating apt/suit number in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Splitting-address-by-separating-apt-suit-number/m-p/384833#M91970</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I have address filed like&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;12345 &amp;nbsp;BROADWAY&amp;nbsp;&amp;nbsp;APT. B&lt;/P&gt;
&lt;P&gt;or&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;12345 &amp;nbsp;BROADWAY&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;SUITE. B&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;or&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;12345 &amp;nbsp;BROADWAY&amp;nbsp;&amp;nbsp;#B&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I would like separte this filed into two variables, which are the address variable (12345 &amp;nbsp;BROADWAY), and apt/suit number variable(APT. B, etc). I understand that I can use scan function to separte by '#' but how I can separte by word 'APT' or 'SUIT'? Any idea would be helpful!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;var1=scan(addr, 1, '#');
var2=scan(addr, 2, '#');&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Tue, 01 Aug 2017 22:57:24 GMT</pubDate>
    <dc:creator>chenyiwen1717</dc:creator>
    <dc:date>2017-08-01T22:57:24Z</dc:date>
    <item>
      <title>Splitting address by separating apt/suit number</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-address-by-separating-apt-suit-number/m-p/384833#M91970</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I have address filed like&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;12345 &amp;nbsp;BROADWAY&amp;nbsp;&amp;nbsp;APT. B&lt;/P&gt;
&lt;P&gt;or&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;12345 &amp;nbsp;BROADWAY&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;SUITE. B&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;or&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;12345 &amp;nbsp;BROADWAY&amp;nbsp;&amp;nbsp;#B&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I would like separte this filed into two variables, which are the address variable (12345 &amp;nbsp;BROADWAY), and apt/suit number variable(APT. B, etc). I understand that I can use scan function to separte by '#' but how I can separte by word 'APT' or 'SUIT'? Any idea would be helpful!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;var1=scan(addr, 1, '#');
var2=scan(addr, 2, '#');&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 01 Aug 2017 22:57:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-address-by-separating-apt-suit-number/m-p/384833#M91970</guid>
      <dc:creator>chenyiwen1717</dc:creator>
      <dc:date>2017-08-01T22:57:24Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting address by separating apt/suit number</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-address-by-separating-apt-suit-number/m-p/384834#M91971</link>
      <description>&lt;P&gt;Use a regular expression. Find a valid pattern here:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.regexlib.com/Search.aspx?k=street+address&amp;amp;c=-1&amp;amp;m=-1&amp;amp;ps=20" target="_blank"&gt;http://www.regexlib.com/Search.aspx?k=street+address&amp;amp;c=-1&amp;amp;m=-1&amp;amp;ps=20&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That is the simplest and most powerful way of handling it.Split the address into groups and then just assign the groups to the correct variable.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Aug 2017 23:06:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-address-by-separating-apt-suit-number/m-p/384834#M91971</guid>
      <dc:creator>AlanC</dc:creator>
      <dc:date>2017-08-01T23:06:59Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting address by separating apt/suit number</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-address-by-separating-apt-suit-number/m-p/384838#M91972</link>
      <description>&lt;P&gt;I agree with&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13798"&gt;@AlanC&lt;/a&gt;.&lt;/P&gt;
&lt;P&gt;Regular expressions are a must for the kind of work you are doing. The learning curve is very steep though.&lt;/P&gt;
&lt;P&gt;Here is stg to get you started:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data HAVE;
  ADD=' 2345  BROADWAY  APT. B   ';  output;
  ADD='12345  BROADWAY  SUITE. B ';  output;
  ADD='12345  BROADWAY  #B       ';  output;
run;
data WANT;
  set HAVE;
  ADD1=prxchange('s/(.*?)(APT|SUITE|#)\.?\s*(\w+)\s+/$1/i',1,ADD);
  ADD2=prxchange('s/(.*?)(APT|SUITE|#)\.?\s*(\w+)\s+/$3/i',1,ADD);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Print: Data Set WORK.WANT" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="l header" scope="col"&gt;ADD&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;ADD1&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;ADD2&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;2345 BROADWAY APT. B&lt;/TD&gt;
&lt;TD class="l data"&gt;2345 BROADWAY&lt;/TD&gt;
&lt;TD class="l data"&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;12345 BROADWAY SUITE. B&lt;/TD&gt;
&lt;TD class="l data"&gt;12345 BROADWAY&lt;/TD&gt;
&lt;TD class="l data"&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;12345 BROADWAY #B&lt;/TD&gt;
&lt;TD class="l data"&gt;12345 BROADWAY&lt;/TD&gt;
&lt;TD class="l data"&gt;B&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;Explanation of the expression:&lt;/P&gt;
&lt;P&gt;s/ &amp;nbsp; &amp;nbsp; &amp;nbsp; we are going to substitute (rather than just match)&lt;/P&gt;
&lt;P&gt;(.*?) &amp;nbsp; first group. we match any characters (? means lazily: we limit the extend of the match as we don't want to prevent other matches)&lt;/P&gt;
&lt;P&gt;(APT|SUITE|#) &amp;nbsp;second group: match any of these strings&lt;/P&gt;
&lt;P&gt;\.? &amp;nbsp; &amp;nbsp;optionally match a dot&lt;/P&gt;
&lt;P&gt;\s* &amp;nbsp;&amp;nbsp;&lt;SPAN&gt;optionally &lt;/SPAN&gt; match any number of spaces&lt;/P&gt;
&lt;P&gt;(\w+) &amp;nbsp;third group: match at least one word character (that's the unit number)&lt;/P&gt;
&lt;P&gt;\s+ &amp;nbsp; &amp;nbsp; match remaining spaces&lt;/P&gt;
&lt;P&gt;/$1 &amp;nbsp; &amp;nbsp; replace all we've matched with the first group (i.e. the address proper)&lt;/P&gt;
&lt;P&gt;/i &amp;nbsp; &amp;nbsp;make the logic case insensitive&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I know looks daunting, but once you get there, you will be rewarded!&lt;/P&gt;</description>
      <pubDate>Tue, 01 Aug 2017 23:32:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-address-by-separating-apt-suit-number/m-p/384838#M91972</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2017-08-01T23:32:22Z</dc:date>
    </item>
    <item>
      <title>Re: Splitting address by separating apt/suit number</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Splitting-address-by-separating-apt-suit-number/m-p/384839#M91973</link>
      <description>&lt;P&gt;The best way, IMO, to learn regex is to use RegexBuddy.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.regexbuddy.com/" target="_blank"&gt;https://www.regexbuddy.com/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Worth every penny and then some.&lt;/P&gt;</description>
      <pubDate>Tue, 01 Aug 2017 23:49:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Splitting-address-by-separating-apt-suit-number/m-p/384839#M91973</guid>
      <dc:creator>AlanC</dc:creator>
      <dc:date>2017-08-01T23:49:29Z</dc:date>
    </item>
  </channel>
</rss>

