<?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: Format Conversion Issue in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Format-Conversion-Issue/m-p/312761#M61433</link>
    <description>&lt;P&gt;The right side of a defined fomat must be a character litteral:&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;format&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;value&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;$&lt;/SPAN&gt;hello &lt;SPAN class="token string"&gt;'N'&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;='&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;0'&lt;/SPAN&gt;
               &lt;SPAN class="token string"&gt;'Y'&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;='&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then, as you want it be numeric you should do:&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; want&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; have1(rename=(&lt;/CODE&gt;&lt;CODE class="  language-sas"&gt;MailOrderIndicator=_mi));&lt;BR /&gt;&lt;/CODE&gt;&lt;CODE class="  language-sas"&gt;      MailOrderIndicator = input(put(_mi, &lt;SPAN class="token punctuation"&gt;$&lt;/SPAN&gt;hello&lt;SPAN class="token punctuation"&gt;.),1.)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt; &lt;BR /&gt;      drop _mi;&lt;BR /&gt;&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;You can treat the FilledMonth in same way.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 19 Nov 2016 00:26:32 GMT</pubDate>
    <dc:creator>Shmuel</dc:creator>
    <dc:date>2016-11-19T00:26:32Z</dc:date>
    <item>
      <title>Format Conversion Issue</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Format-Conversion-Issue/m-p/312755#M61432</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have this dataset:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have1;
  infile datalines;
  format MailOrderIndicator $1. FilledMonth $7.;
  input MailOrderIndicator $ FilledMonth $;
  datalines;
N 2016M09
Y 2016M09
;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Now, I want to convert it to this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have2;
  infile datalines;
  format MailOrderIndicator 1. FilledMonth 1.;
  input MailOrderIndicator FilledMonth;
  datalines;
0 9
1 9
;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Which is to say, I want to create a new dataset out of the first one, but I want N to equal 0, Y to equal 1, and 2016M09 to equal 9 (Character values to numeric values). I tried a custom format but can't seem to get it to work. For example, I tried this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc format;
  value $hello 'N'=0
               'Y'=1;
run;

data want;
  set have1;
  format MailOrderIndicator $hello.;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Which replaces the N with 0 and Y with 1 but they are still character, whereas I want them to be numeric...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 19 Nov 2016 00:03:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Format-Conversion-Issue/m-p/312755#M61432</guid>
      <dc:creator>JediApprentice</dc:creator>
      <dc:date>2016-11-19T00:03:56Z</dc:date>
    </item>
    <item>
      <title>Re: Format Conversion Issue</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Format-Conversion-Issue/m-p/312761#M61433</link>
      <description>&lt;P&gt;The right side of a defined fomat must be a character litteral:&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;format&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;value&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;$&lt;/SPAN&gt;hello &lt;SPAN class="token string"&gt;'N'&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;='&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;0'&lt;/SPAN&gt;
               &lt;SPAN class="token string"&gt;'Y'&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;='&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then, as you want it be numeric you should do:&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; want&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; have1(rename=(&lt;/CODE&gt;&lt;CODE class="  language-sas"&gt;MailOrderIndicator=_mi));&lt;BR /&gt;&lt;/CODE&gt;&lt;CODE class="  language-sas"&gt;      MailOrderIndicator = input(put(_mi, &lt;SPAN class="token punctuation"&gt;$&lt;/SPAN&gt;hello&lt;SPAN class="token punctuation"&gt;.),1.)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt; &lt;BR /&gt;      drop _mi;&lt;BR /&gt;&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;You can treat the FilledMonth in same way.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 19 Nov 2016 00:26:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Format-Conversion-Issue/m-p/312761#M61433</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2016-11-19T00:26:32Z</dc:date>
    </item>
    <item>
      <title>Re: Format Conversion Issue</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Format-Conversion-Issue/m-p/312762#M61434</link>
      <description>&lt;P&gt;You can't re-type a varaible from char to num or vice-versa, so you have to rename the vars, thereby freeing up the original varnames to use with the new var type.&amp;nbsp; Below shows how:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The SCAN functions is asking for the 2nd "word" in col2, where it defines word-separators as the character "M".&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;regards,&lt;/P&gt;
&lt;P&gt;Mark&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have1;
  infile datalines;
  format MailOrderIndicator $1. FilledMonth $7.;
  input MailOrderIndicator $ FilledMonth $;
  datalines;
N 2016M09
Y 2016M09
;
run;

data want;
  set have1 (rename=(mailorderindicator=col1 filledmonth=col2));
  mailorderindicator=ifn(col1='Y',1,0);
  filledmonth=input(scan(col2,2,'M'),2.);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 19 Nov 2016 00:29:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Format-Conversion-Issue/m-p/312762#M61434</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-11-19T00:29:28Z</dc:date>
    </item>
  </channel>
</rss>

