<?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: Replace Space with underscore in Variable Name in SAS Data Management</title>
    <link>https://communities.sas.com/t5/SAS-Data-Management/Replace-Space-with-underscore-in-Variable-Name/m-p/595222#M18159</link>
    <description>&lt;P&gt;Thank you Tom.&amp;nbsp; &amp;nbsp;The simplify Macro works!!!&amp;nbsp;&lt;img id="smileyvery-happy" class="emoticon emoticon-smileyvery-happy" src="https://communities.sas.com/i/smilies/16x16_smiley-very-happy.png" alt="Smiley Very Happy" title="Smiley Very Happy" /&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 10 Oct 2019 00:43:16 GMT</pubDate>
    <dc:creator>LouiseG</dc:creator>
    <dc:date>2019-10-10T00:43:16Z</dc:date>
    <item>
      <title>Replace Space with underscore in Variable Name</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Replace-Space-with-underscore-in-Variable-Name/m-p/595215#M18157</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have large SAS dataset that has spaces in the variable name.&amp;nbsp; I wish to replace the space with underscore.&amp;nbsp; For Example&amp;nbsp; Bus City = Bus_City.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I found this macro in the formun that removes the spaces only.&amp;nbsp; &amp;nbsp; Using the above example, this macro does this:&amp;nbsp; Bus City =BusCity&amp;nbsp; &amp;nbsp;&amp;nbsp;Can someone please help me modify this macro to replace the space with underscore.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&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; sample&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; sashelp&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token statement"&gt;class&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  age_student&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;age&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token string"&gt;'gender - student'&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;n&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;sex&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;SPAN class="token macrobound"&gt;%macro&lt;/SPAN&gt; rename_vars&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token statement"&gt;table&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; remove_char&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token macroname"&gt;%let&lt;/SPAN&gt; &lt;SPAN class="token statement"&gt;table&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token macroname"&gt;%upcase&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="token statement"&gt;table&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token macroname"&gt;%let&lt;/SPAN&gt; rename_list&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;sql&lt;/SPAN&gt; noprint&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="token statement"&gt;select&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;cats&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;"'"&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;name&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;"'n ="&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;compress&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;name&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;"&amp;amp;remove_char"&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;into&lt;/SPAN&gt; :rename_list
      separated &lt;SPAN class="token statement"&gt;by&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;" "&lt;/SPAN&gt;
    &lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt; sashelp&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;vcolumn
      &lt;SPAN class="token statement"&gt;where&lt;/SPAN&gt; upper&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token statement"&gt;libname&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;"%scan(WORK.&amp;amp;table,-2)"&lt;/SPAN&gt;
        and upper&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;memname&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;"%scan(&amp;amp;table,-1)"&lt;/SPAN&gt;
        and &lt;SPAN class="token function"&gt;findc&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;strip&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;name&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;"&amp;amp;remove_char"&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;0&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token procnames"&gt;quit&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

  &lt;SPAN class="token macrostatement"&gt;%put&lt;/SPAN&gt; rename_list: &lt;SPAN class="token macroname"&gt;%bquote&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;rename_list&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

  &lt;SPAN class="token macrostatement"&gt;%if&lt;/SPAN&gt; &lt;SPAN class="token macroname"&gt;%bquote&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;rename_list&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;ne&lt;/SPAN&gt; &lt;SPAN class="token macrostatement"&gt;%then&lt;/SPAN&gt;
    &lt;SPAN class="token macrostatement"&gt;%do&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
      &lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;datasets&lt;/SPAN&gt; lib&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token macroname"&gt;%scan&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;WORK&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="token statement"&gt;table&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;-2&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
        modify &lt;SPAN class="token macroname"&gt;%scan&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="token statement"&gt;table&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&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 punctuation"&gt;;&lt;/SPAN&gt;
          &lt;SPAN class="token function"&gt;rename&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;rename_list&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;SPAN class="token procnames"&gt;quit&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
    &lt;SPAN class="token macrostatement"&gt;%end&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token macrobound"&gt;%mend&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token comment"&gt;/*  call the macro. First parameter is the table name,
    second parameter the characters to be removed in variable names */&lt;/SPAN&gt;
&lt;SPAN class="token macroname"&gt;%rename_vars&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;sample&lt;SPAN class="token punctuation"&gt;,' '&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 10 Oct 2019 00:24:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Replace-Space-with-underscore-in-Variable-Name/m-p/595215#M18157</guid>
      <dc:creator>LouiseG</dc:creator>
      <dc:date>2019-10-10T00:24:24Z</dc:date>
    </item>
    <item>
      <title>Re: Replace Space with underscore in Variable Name</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Replace-Space-with-underscore-in-Variable-Name/m-p/595218#M18158</link>
      <description>&lt;P&gt;Just change the function used to generate the new name.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;translate(trim(name),'_',' ')&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You can also simplify the whole macro.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro rename_vars(table);
  %local rename_list sqlobs;
  proc sql noprint;
    select catx('=',nliteral(name),translate(trim(name),'_',' '))
      into :rename_list separated by ' '
    from sashelp.vcolumn
      where libname=%upcase("%scan(work.&amp;amp;table,-2,.)")
        and memname=%upcase("%scan(&amp;amp;table,-1,.)")
        and indexc(trim(name),' ')
    ;
  quit;
  %if &amp;amp;sqlobs %then %do ;
      proc datasets lib=%scan(WORK.&amp;amp;table,-2);
        modify %scan(&amp;amp;table,-1);
          rename &amp;amp;rename_list;
        run;
      quit;
  %end;
%mend rename_vars;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 10 Oct 2019 00:35:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Replace-Space-with-underscore-in-Variable-Name/m-p/595218#M18158</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-10-10T00:35:31Z</dc:date>
    </item>
    <item>
      <title>Re: Replace Space with underscore in Variable Name</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Replace-Space-with-underscore-in-Variable-Name/m-p/595222#M18159</link>
      <description>&lt;P&gt;Thank you Tom.&amp;nbsp; &amp;nbsp;The simplify Macro works!!!&amp;nbsp;&lt;img id="smileyvery-happy" class="emoticon emoticon-smileyvery-happy" src="https://communities.sas.com/i/smilies/16x16_smiley-very-happy.png" alt="Smiley Very Happy" title="Smiley Very Happy" /&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 10 Oct 2019 00:43:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Replace-Space-with-underscore-in-Variable-Name/m-p/595222#M18159</guid>
      <dc:creator>LouiseG</dc:creator>
      <dc:date>2019-10-10T00:43:16Z</dc:date>
    </item>
  </channel>
</rss>

