<?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 Drop column if [value] in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Drop-column-if-value/m-p/210099#M38944</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to remove a variable if there is no observation in the reference line of my datasets (in this exemple, it is a='a').&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is my test data:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote" modifiedtitle="true"&gt;
&lt;P&gt;data test3;&lt;BR /&gt;input a $ var1 var2 var3 var4 var5;&lt;BR /&gt;datalines;&lt;BR /&gt;a 1 . 2 . 4 &lt;BR /&gt;b . . 1 2 3 &lt;BR /&gt;c 1 2 3 4 5 &lt;BR /&gt;;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like an output like that:&lt;/P&gt;&lt;P&gt;a 1 2 4&lt;/P&gt;&lt;P&gt;b . 1 3&lt;/P&gt;&lt;P&gt;c 1 3 5&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I create a macro with the name of all my variables that start by 'var'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote"&gt;
&lt;P&gt;proc datasets nolist library = work memtype = data; &lt;BR /&gt; contents data = work.test3 out = structure3 noprint;&lt;BR /&gt; run;&lt;BR /&gt;quit;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set structure3;&lt;BR /&gt; retain taeller 0;&lt;BR /&gt; if length(name) &amp;gt; 2 then&lt;BR /&gt;&amp;nbsp;&amp;nbsp; do;&lt;BR /&gt;&amp;nbsp; if substr(lowcase(name),1,3) = "var" then&lt;BR /&gt;&amp;nbsp;&amp;nbsp; do;&lt;BR /&gt;&amp;nbsp; taeller = taeller + 1;&lt;BR /&gt;&amp;nbsp; call symputx('taeller',taeller,'G');&lt;BR /&gt;&amp;nbsp; call symputx('vbr' !! trim(left(put(taeller,5.))), trim(left(name)), 'G');&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;run;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For now, everything is okay. So I modify test3 as I want.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote"&gt;
&lt;P&gt;%macro testt2;&lt;/P&gt;
&lt;P&gt;%local i;&lt;/P&gt;
&lt;P&gt;%do i=1 %to &amp;amp;taeller;&lt;/P&gt;
&lt;P&gt; data test3;&lt;/P&gt;
&lt;P&gt; set test3;&lt;/P&gt;
&lt;P&gt; if 'a'=a then do;&lt;/P&gt;
&lt;P&gt; if &amp;amp;&amp;amp;vbr&amp;amp;i=. then &lt;SPAN style="color: #ff6600;"&gt;drop &amp;amp;&amp;amp;vbr&amp;amp;i&lt;/SPAN&gt;;&lt;/P&gt;
&lt;P&gt; end;&lt;/P&gt;
&lt;P&gt; run;&lt;/P&gt;
&lt;P&gt;%end;&lt;/P&gt;
&lt;P&gt;%mend testt2;&lt;/P&gt;
&lt;P&gt;%testt2;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problem is in red. SAS does not allow this syntax. If I use do end and set the red words into it all my variables are dropped.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 19 Jun 2015 13:13:30 GMT</pubDate>
    <dc:creator>problems99</dc:creator>
    <dc:date>2015-06-19T13:13:30Z</dc:date>
    <item>
      <title>Drop column if [value]</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Drop-column-if-value/m-p/210099#M38944</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to remove a variable if there is no observation in the reference line of my datasets (in this exemple, it is a='a').&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is my test data:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote" modifiedtitle="true"&gt;
&lt;P&gt;data test3;&lt;BR /&gt;input a $ var1 var2 var3 var4 var5;&lt;BR /&gt;datalines;&lt;BR /&gt;a 1 . 2 . 4 &lt;BR /&gt;b . . 1 2 3 &lt;BR /&gt;c 1 2 3 4 5 &lt;BR /&gt;;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like an output like that:&lt;/P&gt;&lt;P&gt;a 1 2 4&lt;/P&gt;&lt;P&gt;b . 1 3&lt;/P&gt;&lt;P&gt;c 1 3 5&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I create a macro with the name of all my variables that start by 'var'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote"&gt;
&lt;P&gt;proc datasets nolist library = work memtype = data; &lt;BR /&gt; contents data = work.test3 out = structure3 noprint;&lt;BR /&gt; run;&lt;BR /&gt;quit;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set structure3;&lt;BR /&gt; retain taeller 0;&lt;BR /&gt; if length(name) &amp;gt; 2 then&lt;BR /&gt;&amp;nbsp;&amp;nbsp; do;&lt;BR /&gt;&amp;nbsp; if substr(lowcase(name),1,3) = "var" then&lt;BR /&gt;&amp;nbsp;&amp;nbsp; do;&lt;BR /&gt;&amp;nbsp; taeller = taeller + 1;&lt;BR /&gt;&amp;nbsp; call symputx('taeller',taeller,'G');&lt;BR /&gt;&amp;nbsp; call symputx('vbr' !! trim(left(put(taeller,5.))), trim(left(name)), 'G');&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;run;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For now, everything is okay. So I modify test3 as I want.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote"&gt;
&lt;P&gt;%macro testt2;&lt;/P&gt;
&lt;P&gt;%local i;&lt;/P&gt;
&lt;P&gt;%do i=1 %to &amp;amp;taeller;&lt;/P&gt;
&lt;P&gt; data test3;&lt;/P&gt;
&lt;P&gt; set test3;&lt;/P&gt;
&lt;P&gt; if 'a'=a then do;&lt;/P&gt;
&lt;P&gt; if &amp;amp;&amp;amp;vbr&amp;amp;i=. then &lt;SPAN style="color: #ff6600;"&gt;drop &amp;amp;&amp;amp;vbr&amp;amp;i&lt;/SPAN&gt;;&lt;/P&gt;
&lt;P&gt; end;&lt;/P&gt;
&lt;P&gt; run;&lt;/P&gt;
&lt;P&gt;%end;&lt;/P&gt;
&lt;P&gt;%mend testt2;&lt;/P&gt;
&lt;P&gt;%testt2;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problem is in red. SAS does not allow this syntax. If I use do end and set the red words into it all my variables are dropped.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Jun 2015 13:13:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Drop-column-if-value/m-p/210099#M38944</guid>
      <dc:creator>problems99</dc:creator>
      <dc:date>2015-06-19T13:13:30Z</dc:date>
    </item>
    <item>
      <title>Re: Drop column if [value]</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Drop-column-if-value/m-p/210100#M38945</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;will you define 'reference line'?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Jun 2015 13:25:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Drop-column-if-value/m-p/210100#M38945</guid>
      <dc:creator>Steelers_In_DC</dc:creator>
      <dc:date>2015-06-19T13:25:42Z</dc:date>
    </item>
    <item>
      <title>Re: Drop column if [value]</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Drop-column-if-value/m-p/210101#M38946</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In my real application,&lt;EM&gt; a&lt;/EM&gt; is a date and 'a' a particular date.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Jun 2015 13:28:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Drop-column-if-value/m-p/210101#M38946</guid>
      <dc:creator>problems99</dc:creator>
      <dc:date>2015-06-19T13:28:42Z</dc:date>
    </item>
    <item>
      <title>Re: Drop column if [value]</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Drop-column-if-value/m-p/210102#M38947</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Please try&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data test3;&lt;/P&gt;&lt;P&gt;input a $ var1 var2 var3 var4 var5;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;a 1 . 2 . 4&lt;/P&gt;&lt;P&gt;b . . 1 2 3&lt;/P&gt;&lt;P&gt;c 1 2 3 4 5&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc transpose data=test3 out=test4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; by a;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var var1-var5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _name_ into :vars separated by ' ' from test4 where col1=. and a='a';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put &amp;amp;vars;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data test3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set test3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; drop &amp;amp;vars;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Jag&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Jun 2015 14:03:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Drop-column-if-value/m-p/210102#M38947</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2015-06-19T14:03:13Z</dc:date>
    </item>
    <item>
      <title>Re: Drop column if [value]</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Drop-column-if-value/m-p/210103#M38948</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks it works well.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Jun 2015 14:12:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Drop-column-if-value/m-p/210103#M38948</guid>
      <dc:creator>problems99</dc:creator>
      <dc:date>2015-06-19T14:12:39Z</dc:date>
    </item>
    <item>
      <title>Re: Drop column if [value]</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Drop-column-if-value/m-p/210104#M38949</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm not sure this is simpler, but it is (in a way) just one step:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;set have;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;where a='a';&lt;/P&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;call execute('data want; set have;');&lt;/P&gt;&lt;P&gt;array vars {*} var1-var5;&lt;/P&gt;&lt;P&gt;do _i_=1 to dim(vars);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if vars{_i_}=. then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name = vname(vars{_i_});&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call execute ('drop ' || name || ';');&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;call execute('run;');&lt;/P&gt;&lt;P&gt;stop;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This program assumes there is only one observation meeting the WHERE condition;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Jun 2015 14:13:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Drop-column-if-value/m-p/210104#M38949</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2015-06-19T14:13:32Z</dc:date>
    </item>
  </channel>
</rss>

