<?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: Variable Combination and Flag Selection in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Variable-Combination-and-Flag-Selection/m-p/485306#M126064</link>
    <description>&lt;P&gt;I wrote this myself and I think it gives what I want. Thanks all.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data varlist;
length name $32.;
input name class_flag;
cards4;
var1 0
var2 1
var3 1
var4 0
;;;;
run;

%macro exhaust();

	data varlist;
	set varlist;
	id+1;
	if class_flag=1 then class_name=name;
	run;
	data combo_all;set _null_;run;

	proc sql;select count(*) into: varct from varlist;quit;
	%put &amp;amp;varct.;

	%do i=1 %to &amp;amp;varct.;

		%if &amp;amp;i.=1 %then %do;
			data combo;
			set varlist (rename=(name=Var_Combo class_flag=num_flag));
			num_var=1;
			if num_flag=1 then Class_Var=class_name;
			drop flag_name;
			run;
		%end;

		%if &amp;amp;i.&amp;gt;1 %then %do;
			proc sql;
			create table combo as 
			select 
			strip(a.Var_Combo)||"   "||strip(b.name) as Var_Combo,
			strip(a.Class_Var)||"   "||strip(b.class_name) as Class_Var,
			&amp;amp;i. as Num_Var,
			a.num_flag+b.class_flag as Num_Flag,
			max(a.id,b.id) as id
			from combo as a, varlist as b 
			where a.id &amp;lt; b.id 
			;
			quit;
		%end;

		data combo_all;
		set combo_all combo;
		run;

	%end;

%mend exhaust;


%exhaust();&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 08 Aug 2018 22:58:51 GMT</pubDate>
    <dc:creator>apolitical</dc:creator>
    <dc:date>2018-08-08T22:58:51Z</dc:date>
    <item>
      <title>Variable Combination and Flag Selection</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Variable-Combination-and-Flag-Selection/m-p/485239#M126041</link>
      <description>&lt;P&gt;I have a list of variable names, and want to get all possible combinations of any number of variables from that list. Separately, each variable has a flag value of 0 or 1, for each combination, I also want to single out the variables with flag of 1 and put them together in a separate field. Also, I want a field with the number of variables selected, as well as a field with the number of flagged variables.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Example:&lt;/P&gt;&lt;P&gt;I start with this list&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Name&lt;/TD&gt;&lt;TD&gt;Flag&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;V1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;V2&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;V3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to get to this list:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Combo&lt;/TD&gt;&lt;TD&gt;Flagged_Vars&lt;/TD&gt;&lt;TD&gt;Num_Var&lt;/TD&gt;&lt;TD&gt;Num_Flag_Var&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;V1&lt;/TD&gt;&lt;TD&gt;V1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;V2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;V3&lt;/TD&gt;&lt;TD&gt;V3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;V1 V2&lt;/TD&gt;&lt;TD&gt;V1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;V1 V3&lt;/TD&gt;&lt;TD&gt;V1 V3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;V2 V3&lt;/TD&gt;&lt;TD&gt;V3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;V1 V2 V3&lt;/TD&gt;&lt;TD&gt;V1 V3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you!&lt;/P&gt;</description>
      <pubDate>Wed, 08 Aug 2018 20:01:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Variable-Combination-and-Flag-Selection/m-p/485239#M126041</guid>
      <dc:creator>apolitical</dc:creator>
      <dc:date>2018-08-08T20:01:50Z</dc:date>
    </item>
    <item>
      <title>Re: Variable Combination and Flag Selection</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Variable-Combination-and-Flag-Selection/m-p/485280#M126053</link>
      <description>&lt;P&gt;see my response to&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://communities.sas.com/t5/Base-SAS-Programming/Analyzing-Multiple-Response-Variables/m-p/485261#M126048" target="_self"&gt;Analyzing-Multiple-Response-Variables&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ron Fehd&amp;nbsp; macro maven&lt;/P&gt;</description>
      <pubDate>Wed, 08 Aug 2018 20:22:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Variable-Combination-and-Flag-Selection/m-p/485280#M126053</guid>
      <dc:creator>Ron_MacroMaven</dc:creator>
      <dc:date>2018-08-08T20:22:08Z</dc:date>
    </item>
    <item>
      <title>Re: Variable Combination and Flag Selection</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Variable-Combination-and-Flag-Selection/m-p/485306#M126064</link>
      <description>&lt;P&gt;I wrote this myself and I think it gives what I want. Thanks all.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data varlist;
length name $32.;
input name class_flag;
cards4;
var1 0
var2 1
var3 1
var4 0
;;;;
run;

%macro exhaust();

	data varlist;
	set varlist;
	id+1;
	if class_flag=1 then class_name=name;
	run;
	data combo_all;set _null_;run;

	proc sql;select count(*) into: varct from varlist;quit;
	%put &amp;amp;varct.;

	%do i=1 %to &amp;amp;varct.;

		%if &amp;amp;i.=1 %then %do;
			data combo;
			set varlist (rename=(name=Var_Combo class_flag=num_flag));
			num_var=1;
			if num_flag=1 then Class_Var=class_name;
			drop flag_name;
			run;
		%end;

		%if &amp;amp;i.&amp;gt;1 %then %do;
			proc sql;
			create table combo as 
			select 
			strip(a.Var_Combo)||"   "||strip(b.name) as Var_Combo,
			strip(a.Class_Var)||"   "||strip(b.class_name) as Class_Var,
			&amp;amp;i. as Num_Var,
			a.num_flag+b.class_flag as Num_Flag,
			max(a.id,b.id) as id
			from combo as a, varlist as b 
			where a.id &amp;lt; b.id 
			;
			quit;
		%end;

		data combo_all;
		set combo_all combo;
		run;

	%end;

%mend exhaust;


%exhaust();&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 08 Aug 2018 22:58:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Variable-Combination-and-Flag-Selection/m-p/485306#M126064</guid>
      <dc:creator>apolitical</dc:creator>
      <dc:date>2018-08-08T22:58:51Z</dc:date>
    </item>
    <item>
      <title>Re: Variable Combination and Flag Selection</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Variable-Combination-and-Flag-Selection/m-p/485486#M126144</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;
input Name	$ Flag;
cards;
V1 1
V2 0
V3 1
;

%let dsid=%sysfunc(open(have));
%let nobs=%sysfunc(attrn(&amp;amp;dsid,nlobs));
%let dsid=%sysfunc(close(&amp;amp;dsid));

data want;
set have end=last;
length combo  Flagged_Vars $ 200;
array x{&amp;amp;nobs};
array n{&amp;amp;nobs} $ 32 _temporary_;
array f{&amp;amp;nobs} _temporary_;
n{_n_}=name;
f{_n_]=flag;
if last then do; 
k=-1;
do i=1 to 2**&amp;amp;nobs;
 rc=graycode(k, of x{*});
 call missing(combo,Flagged_Vars);
 Num_Flag_Var=0;
 do j=1 to &amp;amp;nobs; 
  if x{j}=1 then do;combo=catx(' ',combo,n{j});	Num_Flag_Var+f{j}; end;
  if x{j}=1 and f{j}=1 then Flagged_Vars=catx(' ',Flagged_Vars,n{j});
 end;
 Num_Var=countw(combo);
 if Num_Var ne 0 then output;
end;
end;
keep combo 	Flagged_Vars Num_Var	Num_Flag_Var;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 09 Aug 2018 14:14:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Variable-Combination-and-Flag-Selection/m-p/485486#M126144</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-08-09T14:14:35Z</dc:date>
    </item>
    <item>
      <title>Re: Variable Combination and Flag Selection</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Variable-Combination-and-Flag-Selection/m-p/485539#M126163</link>
      <description>Tried it and it works. Thank you!</description>
      <pubDate>Thu, 09 Aug 2018 17:40:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Variable-Combination-and-Flag-Selection/m-p/485539#M126163</guid>
      <dc:creator>apolitical</dc:creator>
      <dc:date>2018-08-09T17:40:05Z</dc:date>
    </item>
  </channel>
</rss>

