<?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: Automate SAS code for multiple sites in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Automate-SAS-code-for-multiple-sites/m-p/878426#M347054</link>
    <description>THought of array method, but I have around 100 variables to list in the array statement, so was not sure if its a good approach.  I have multiple files, a separate file for each site. I also have a master file from which I get the mapping of the standard Q#s with site Q#s</description>
    <pubDate>Wed, 31 May 2023 13:59:52 GMT</pubDate>
    <dc:creator>rsva</dc:creator>
    <dc:date>2023-05-31T13:59:52Z</dc:date>
    <item>
      <title>Automate SAS code for multiple sites</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Automate-SAS-code-for-multiple-sites/m-p/878289#M346984</link>
      <description>&lt;P&gt;Greetings,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am working on SAS code to create several dichotomous variables using IF-THEN-ELSE statements. I need to create SAS codes for multiple sites where the questions numbers changes between each site. Snapshot of a data set with standard question number and Q #s for site1 and site2.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="390"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="140"&gt;Standard Question #&lt;/TD&gt;
&lt;TD width="118"&gt;Site1 Question #&lt;/TD&gt;
&lt;TD width="132"&gt;Site2 Question #&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;V1&lt;/TD&gt;
&lt;TD&gt;V12&lt;/TD&gt;
&lt;TD&gt;V4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;V2&lt;/TD&gt;
&lt;TD&gt;V2&lt;/TD&gt;
&lt;TD&gt;V7&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;V3&lt;/TD&gt;
&lt;TD&gt;V6&lt;/TD&gt;
&lt;TD&gt;V3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;V4&lt;/TD&gt;
&lt;TD&gt;V9&lt;/TD&gt;
&lt;TD&gt;V1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;V5&lt;/TD&gt;
&lt;TD&gt;V5&lt;/TD&gt;
&lt;TD&gt;V9&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;V6&lt;/TD&gt;
&lt;TD&gt;V4&lt;/TD&gt;
&lt;TD&gt;V10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;V7&lt;/TD&gt;
&lt;TD&gt;V8&lt;/TD&gt;
&lt;TD&gt;V6&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;V8&lt;/TD&gt;
&lt;TD&gt;V9&lt;/TD&gt;
&lt;TD&gt;V8&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;V9&lt;/TD&gt;
&lt;TD&gt;V1&lt;/TD&gt;
&lt;TD&gt;V13&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;V10&lt;/TD&gt;
&lt;TD&gt;V2&lt;/TD&gt;
&lt;TD&gt;V11&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Below is a sample code that uses the standard question number. The code that I have.&lt;/P&gt;
&lt;TABLE width="354"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="354"&gt;HAVE base code&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V1=1 THEN VAR1=1; ELSE VAR1=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V2=2 THEN VAR2=2; ELSE VAR2=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V3 IN (1,2,3) THEN VAR3=1; ELSE VAR3=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V4 IN (1,5) THEN VAR4=1; ELSE VAR4=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V5=1 THEN VAR5=1; ELSE VAR5=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V6=2 THEN VAR6=2; ELSE VAR6=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V7 IN (1,5) THEN VAR7=1; ELSE VAR7=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V8=1 THEN VAR8=1; ELSE VAR8=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V9=2 THEN VAR9=2; ELSE VAR9=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V10 IN (1,2,3) THEN VAR10=1; ELSE VAR10=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I need to create codes for site1 and site2, below:&lt;/P&gt;
&lt;TABLE width="502"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="248"&gt;Need code for Site1&lt;/TD&gt;
&lt;TD width="254"&gt;Need code for Site2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V12=1 THEN VAR1=1; ELSE VAR1=2;&lt;/TD&gt;
&lt;TD&gt;IF V4=1 THEN VAR1=1; ELSE VAR1=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V2=2 THEN VAR2=2; ELSE VAR2=2;&lt;/TD&gt;
&lt;TD&gt;IF V7=2 THEN VAR2=2; ELSE VAR2=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V6 IN (1,2,3) THEN VAR3=1; ELSE VAR3=2;&lt;/TD&gt;
&lt;TD&gt;IF V3 IN (1,2,3) THEN VAR3=1; ELSE VAR3=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V9 IN (1,5) THEN VAR4=1; ELSE VAR4=2;&lt;/TD&gt;
&lt;TD&gt;IF V1 IN (1,5) THEN VAR4=1; ELSE VAR4=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V5=1 THEN VAR5=1; ELSE VAR5=2;&lt;/TD&gt;
&lt;TD&gt;IF V9=1 THEN VAR5=1; ELSE VAR5=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V4=2 THEN VAR6=2; ELSE VAR6=2;&lt;/TD&gt;
&lt;TD&gt;IF V10=2 THEN VAR6=2; ELSE VAR6=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V8 IN (1,5) THEN VAR7=1; ELSE VAR7=2;&lt;/TD&gt;
&lt;TD&gt;IF V6 IN (1,5) THEN VAR7=1; ELSE VAR7=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V9=1 THEN VAR8=1; ELSE VAR8=2;&lt;/TD&gt;
&lt;TD&gt;IF V8=1 THEN VAR8=1; ELSE VAR8=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V1=2 THEN VAR9=2; ELSE VAR9=2;&lt;/TD&gt;
&lt;TD&gt;IF V13 THEN VAR9=2; ELSE VAR9=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;IF V2 IN (1,2,3) THEN VAR10=1; ELSE VAR10=2;&lt;/TD&gt;
&lt;TD&gt;IF V11 IN (1,2,3) THEN VAR10=1; ELSE VAR10=2;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have several sites that I need to recreate and would like to see if there is a simpler way to update the V#s instead of going through each code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks.&lt;/P&gt;
&lt;P&gt;RVAS.&lt;/P&gt;</description>
      <pubDate>Tue, 30 May 2023 18:24:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Automate-SAS-code-for-multiple-sites/m-p/878289#M346984</guid>
      <dc:creator>rsva</dc:creator>
      <dc:date>2023-05-30T18:24:56Z</dc:date>
    </item>
    <item>
      <title>Re: Automate SAS code for multiple sites</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Automate-SAS-code-for-multiple-sites/m-p/878318#M346997</link>
      <description>&lt;P&gt;Use arrays and then you can just change the list of variables in the array assuming the order is the same each time.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;array _ques(*) v1 v2 v3 v4 v5 v6 v7 v8 v9 v10; *CHANGE ORDER OF VARIABLES HERE;
*array _ques(*) v12 v2 v6 v9 v5 v4 v8 v9 v1 v2;

IF _ques(1)=1 THEN VAR1=1; ELSE VAR1=2;
IF _ques(2)=2 THEN VAR2=2; ELSE VAR2=2;
IF _ques(3) IN (1,2,3) THEN VAR3=1; ELSE VAR3=2;
IF _ques(4) IN (1,5) THEN VAR4=1; ELSE VAR4=2;
IF _ques(5)=1 THEN VAR5=1; ELSE VAR5=2;
IF _ques(6)=2 THEN VAR6=2; ELSE VAR6=2;
IF _ques(7) IN (1,5) THEN VAR7=1; ELSE VAR7=2;
IF _ques(8)=1 THEN VAR8=1; ELSE VAR8=2;
IF _ques(9)=2 THEN VAR9=2; ELSE VAR9=2;
IF _ques(10) IN (1,2,3) THEN VAR10=1; ELSE VAR10=2;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 30 May 2023 21:30:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Automate-SAS-code-for-multiple-sites/m-p/878318#M346997</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2023-05-30T21:30:25Z</dc:date>
    </item>
    <item>
      <title>Re: Automate SAS code for multiple sites</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Automate-SAS-code-for-multiple-sites/m-p/878322#M346999</link>
      <description>If all the data is one file, I would use a multidimensional array to do this all at once. You'll need to provide more information on how your data is structured( multiple files, single files) and how you will be doing this.</description>
      <pubDate>Tue, 30 May 2023 21:43:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Automate-SAS-code-for-multiple-sites/m-p/878322#M346999</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2023-05-30T21:43:46Z</dc:date>
    </item>
    <item>
      <title>Re: Automate SAS code for multiple sites</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Automate-SAS-code-for-multiple-sites/m-p/878329#M347005</link>
      <description>&lt;P&gt;Did you combine "sites" data from multiple sources? If so I would suggest a different approach to combining the data. RENAME the variables so they are the same and add variables to the data that indicate which source.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This sort makes me think much of this could be done when the data is read if you use a data step.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 30 May 2023 21:59:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Automate-SAS-code-for-multiple-sites/m-p/878329#M347005</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2023-05-30T21:59:43Z</dc:date>
    </item>
    <item>
      <title>Re: Automate SAS code for multiple sites</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Automate-SAS-code-for-multiple-sites/m-p/878426#M347054</link>
      <description>THought of array method, but I have around 100 variables to list in the array statement, so was not sure if its a good approach.  I have multiple files, a separate file for each site. I also have a master file from which I get the mapping of the standard Q#s with site Q#s</description>
      <pubDate>Wed, 31 May 2023 13:59:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Automate-SAS-code-for-multiple-sites/m-p/878426#M347054</guid>
      <dc:creator>rsva</dc:creator>
      <dc:date>2023-05-31T13:59:52Z</dc:date>
    </item>
    <item>
      <title>Re: Automate SAS code for multiple sites</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Automate-SAS-code-for-multiple-sites/m-p/878463#M347068</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro recode_file(_indsn=, _outdsn=, question=);

*get variable order from first list;
proc sql noprint;
select &amp;amp;question into: quest_list separated by " "
from question_mapping
order by standard_question;
quit;

data &amp;amp;_outdsn.;
set &amp;amp;_indsn;

array _quest(*) &amp;amp;quest_list;

IF _ques(1)=1 THEN VAR1=1; ELSE VAR1=2;
IF _ques(2)=2 THEN VAR2=2; ELSE VAR2=2;
IF _ques(3) IN (1,2,3) THEN VAR3=1; ELSE VAR3=2;
IF _ques(4) IN (1,5) THEN VAR4=1; ELSE VAR4=2;
IF _ques(5)=1 THEN VAR5=1; ELSE VAR5=2;
IF _ques(6)=2 THEN VAR6=2; ELSE VAR6=2;
IF _ques(7) IN (1,5) THEN VAR7=1; ELSE VAR7=2;
IF _ques(8)=1 THEN VAR8=1; ELSE VAR8=2;
IF _ques(9)=2 THEN VAR9=2; ELSE VAR9=2;
IF _ques(10) IN (1,2,3) THEN VAR10=1; ELSE VAR10=2;

run;

%mend;

*example call;
%recode_file(_indsn=have, _outdsn=want, question=site_question1);
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then call the macro once for each file/dataset indicating the input data set, output data set and question/variable from the question mapping dataset.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 31 May 2023 15:16:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Automate-SAS-code-for-multiple-sites/m-p/878463#M347068</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2023-05-31T15:16:17Z</dc:date>
    </item>
  </channel>
</rss>

