Hi Tom, The solution you posted using transpose works great for something else i have been doing. So many thanks. Apologies for not making my example more clear from the start. I'll expand: Each record/row represents a coalition in a community engaged in drug use prevention. The data represent their indication of whether they are currently engaged in efforts around that substance, where 1 = Yes and 0 = No. I have to report out the frequency/prevalence of each combination of substances that coalitions are engaged in. data have; input row meth rx nonrx; cards; 1 1 0 0 2 1 1 0 3 0 1 0 ; run; proc print; run; So, the first coalition is working on meth only, the second on meth and prescription drugs, and the third on prescription drugs only. Note that nobody is working on non-rx (non-prescription opioids), among other combinations which i also need to report out (meaning i need to know that no coalitions are working on those combinations). So manually, i was accomplish creating the indicators this way: data want;
set have;
meth=0; meth_rx=0; meth_nonrx=0; meth_rx_nonrx=0; rx=0; rx_nonrx=0; nonrx=0;
if meth = 1 and rx = 0 and nonrx = 0 then meth = 1;
if meth = 1 and rx = 1 and nonrx = 0 then meth_rx = 1;
if meth = 1 and rx = 0 and nonrx = 1 then meth_nonrx = 1;
if meth = 1 and rx = 1 and nonrx = 1 then meth_rx_nonrx = 1;
if meth = 0 and rx = 1 and nonrx = 0 then rx = 1;
if meth = 0 and rx = 1 and nonrx = 1 then rx_nonrx = 1;
if meth = 0 and rx = 0 and nonrx = 1 then nonrx = 1;
run;
proc print; run; meth_ meth_rx_
Obs row meth_n rx_n nonrx_n meth meth_rx nonrx nonrx rx rx_nonrx nonrx
1 1 1 0 0 0 0 0 0 0 0 0
2 2 1 1 0 0 0 0 0 0 0 0
3 3 0 1 0 0 0 0 0 0 0 0 Currently I have two more substances to incorporate and (sadly) we add more substances from time to time. Right now, i can create the variables and remain under 32. It seems like i should be able to use two arrays where the 2nd is one variable ahead...but i just can't wrap my head around the creation of the variable name.
... View more