<?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: SAS code for counting %ge ids exposure in SAS Studio</title>
    <link>https://communities.sas.com/t5/SAS-Studio/SAS-code-for-counting-ge-ids-exposure/m-p/605832#M8322</link>
    <description>Thanks very much.&lt;BR /&gt;ak</description>
    <pubDate>Wed, 20 Nov 2019 16:30:40 GMT</pubDate>
    <dc:creator>ak2011</dc:creator>
    <dc:date>2019-11-20T16:30:40Z</dc:date>
    <item>
      <title>SAS code for counting %ge ids exposure</title>
      <link>https://communities.sas.com/t5/SAS-Studio/SAS-code-for-counting-ge-ids-exposure/m-p/605434#M8308</link>
      <description>&lt;DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;I would appreciate if someone could provide me the SAS code to count % subjects(ids) exposed to chemicals:idchem variable:&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;The SAS code to merge two datasets (17obs each )&amp;nbsp; extracted from over 100,000 obs (the larger dataset) is shown below: Output is attached.&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;The idea is if the SAS code works for this 17 obs, then it can be applied to the larger dataset:&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;I used proc freq id*idchem and other methods(not shown) but I did not arrive at the right answer shown in the manual calculations below:&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;I am counting single ids exposed to cla and bio separately with respect to idchem's. From the tables under cla_exp and bio_exp columns, 0=non-exposed and 1 is exposed.&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;For cla:&lt;STRONG&gt; idchem=990005&lt;/STRONG&gt;, For the &lt;STRONG&gt;os1's&lt;/STRONG&gt; :os1-1 and os1-2, cla_exp for each = &lt;STRONG&gt;1(but same id(os1), so 1 subject(id) exposed)&lt;/STRONG&gt;:&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;For the &lt;STRONG&gt;os2;s:&amp;nbsp;&lt;/STRONG&gt;os2-1(1 exposure) and os2-2(1 exposure) but same id so &lt;STRONG&gt;1 subject exposed:&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;For&amp;nbsp;For the &lt;STRONG&gt;os3's:&amp;nbsp;No exposure ie zero (0)&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;For the &lt;STRONG&gt;os4;s:&amp;nbsp;&lt;/STRONG&gt;os4-1(1 exposure)&amp;nbsp; &lt;STRONG&gt;1 subject exposed:&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;So %ge id exposure for &lt;STRONG&gt;idchem=99005 is 3/4=75%&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;Same principle will be applied for bio.&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;Could someone help me with the SAS code to&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;a.find the %ge ids exposed to idchem=990005,etc for cla and others for bio?&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;b. also find the %ge those exposed to other idchems among those exposed to idchem=990005. ie. cross association between idchem=990005 and each of the other idchems.&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;Thanks in advance.&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;ak.&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;PRE&gt;&lt;BR /&gt;data idnew1;&lt;BR /&gt;input id$ job idchem;&lt;BR /&gt;datalines;&lt;BR /&gt;os1 1 990005&lt;BR /&gt;os1 1 9900021&lt;BR /&gt;os1 1 211700&lt;BR /&gt;os1 2 211700&lt;BR /&gt;os1 2 9900021&lt;BR /&gt;os1 2 210701&lt;BR /&gt;os1 2 990005&lt;BR /&gt;os2 1 210701&lt;BR /&gt;os2 1 990005&lt;BR /&gt;os2 2 9900021&lt;BR /&gt;os2 3 210701&lt;BR /&gt;os2 3 990005&lt;BR /&gt;os3 3 210701&lt;BR /&gt;os3 1 211700&lt;BR /&gt;os4 1 210701&lt;BR /&gt;os4 1 990005&lt;BR /&gt;os4 1 211700&lt;BR /&gt;;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;/* Cla-Exposure*/&lt;BR /&gt;data cla;&lt;BR /&gt;set idnew1;&lt;BR /&gt;if idchem=990005 then Cla_Exp=1; else Cla_Exp=0; &lt;BR /&gt;id_job=catx('_', id, job); &lt;BR /&gt;put _all_; &lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;proc print data=cla;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;/* Bio-Exposure*/&lt;BR /&gt;data bio;&lt;BR /&gt;set idnew1;&lt;BR /&gt;if idchem=9900021 then Bio_Exp=1; else Bio_Exp=0; &lt;BR /&gt;id_job=catx('_', id, job); &lt;BR /&gt;put _all_; &lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;proc print data=bio;&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;/* Merging cla &amp;amp; bio files*/&lt;BR /&gt;data m1; merge cla bio;&lt;BR /&gt;/*id_job=catx('_', id, job);*/ &lt;BR /&gt;put _all_; &lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;data try; &lt;BR /&gt;set m1; &lt;BR /&gt;id_job=catx('_', id, job); &lt;BR /&gt;put _all_; &lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;proc print data=m1;&lt;BR /&gt;Title"Merged Cla &amp;amp; Bio exposures";&lt;BR /&gt;run;&lt;BR /&gt;&lt;BR /&gt;proc sql;&lt;BR /&gt;	select a.idchem, a.frequency / b.total as percentage format=Percent8.2&lt;BR /&gt;	from (select idchem, count(id_job) as frequency from m1 group by idchem) as a,&lt;BR /&gt;		 (select count(distinct(id_job)) as total from m1) as b;&lt;BR /&gt;quit;&lt;/PRE&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;1 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;72&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="sasSource"&gt;73 data idnew1;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;74 input id$ job idchem;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;75 datalines;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: The data set WORK.IDNEW1 has 17 observations and 3 variables.&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: DATA statement used (Total process time):&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;real time 0.01 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;cpu time 0.01 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;93 ;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;94 run;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;95&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;96 /* Cla-Exposure*/&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;97 data cla;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;98 set idnew1;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;99 if idchem=990005 then Cla_Exp=1; else Cla_Exp=0;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;100 id_job=catx('_', id, job);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;101 put _all_;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;102 run;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=1 idchem=990005 Cla_Exp=1 id_job=os1_1 _ERROR_=0 _N_=1&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=1 idchem=9900021 Cla_Exp=0 id_job=os1_1 _ERROR_=0 _N_=2&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=1 idchem=211700 Cla_Exp=0 id_job=os1_1 _ERROR_=0 _N_=3&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=211700 Cla_Exp=0 id_job=os1_2 _ERROR_=0 _N_=4&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=9900021 Cla_Exp=0 id_job=os1_2 _ERROR_=0 _N_=5&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=210701 Cla_Exp=0 id_job=os1_2 _ERROR_=0 _N_=6&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=990005 Cla_Exp=1 id_job=os1_2 _ERROR_=0 _N_=7&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=1 idchem=210701 Cla_Exp=0 id_job=os2_1 _ERROR_=0 _N_=8&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=1 idchem=990005 Cla_Exp=1 id_job=os2_1 _ERROR_=0 _N_=9&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=2 idchem=9900021 Cla_Exp=0 id_job=os2_2 _ERROR_=0 _N_=10&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=3 idchem=210701 Cla_Exp=0 id_job=os2_3 _ERROR_=0 _N_=11&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=3 idchem=990005 Cla_Exp=1 id_job=os2_3 _ERROR_=0 _N_=12&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os3 job=3 idchem=210701 Cla_Exp=0 id_job=os3_3 _ERROR_=0 _N_=13&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os3 job=1 idchem=211700 Cla_Exp=0 id_job=os3_1 _ERROR_=0 _N_=14&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os4 job=1 idchem=210701 Cla_Exp=0 id_job=os4_1 _ERROR_=0 _N_=15&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os4 job=1 idchem=990005 Cla_Exp=1 id_job=os4_1 _ERROR_=0 _N_=16&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os4 job=1 idchem=211700 Cla_Exp=0 id_job=os4_1 _ERROR_=0 _N_=17&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: There were 17 observations read from the data set WORK.IDNEW1.&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: The data set WORK.CLA has 17 observations and 5 variables.&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: DATA statement used (Total process time):&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;real time 0.02 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;cpu time 0.02 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;103&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;104 proc print data=cla;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;105 run;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: There were 17 observations read from the data set WORK.CLA.&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: PROCEDURE PRINT used (Total process time):&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;real time 0.34 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;cpu time 0.34 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;106&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;107 /* Bio-Exposure*/&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;108 data bio;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;109 set idnew1;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;110 if idchem=9900021 then Bio_Exp=1; else Bio_Exp=0;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;111 id_job=catx('_', id, job);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;112 put _all_;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;113 run;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=1 idchem=990005 Bio_Exp=0 id_job=os1_1 _ERROR_=0 _N_=1&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=1 idchem=9900021 Bio_Exp=1 id_job=os1_1 _ERROR_=0 _N_=2&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=1 idchem=211700 Bio_Exp=0 id_job=os1_1 _ERROR_=0 _N_=3&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=211700 Bio_Exp=0 id_job=os1_2 _ERROR_=0 _N_=4&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=9900021 Bio_Exp=1 id_job=os1_2 _ERROR_=0 _N_=5&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=210701 Bio_Exp=0 id_job=os1_2 _ERROR_=0 _N_=6&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=990005 Bio_Exp=0 id_job=os1_2 _ERROR_=0 _N_=7&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=1 idchem=210701 Bio_Exp=0 id_job=os2_1 _ERROR_=0 _N_=8&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=1 idchem=990005 Bio_Exp=0 id_job=os2_1 _ERROR_=0 _N_=9&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=2 idchem=9900021 Bio_Exp=1 id_job=os2_2 _ERROR_=0 _N_=10&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=3 idchem=210701 Bio_Exp=0 id_job=os2_3 _ERROR_=0 _N_=11&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=3 idchem=990005 Bio_Exp=0 id_job=os2_3 _ERROR_=0 _N_=12&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os3 job=3 idchem=210701 Bio_Exp=0 id_job=os3_3 _ERROR_=0 _N_=13&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os3 job=1 idchem=211700 Bio_Exp=0 id_job=os3_1 _ERROR_=0 _N_=14&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os4 job=1 idchem=210701 Bio_Exp=0 id_job=os4_1 _ERROR_=0 _N_=15&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os4 job=1 idchem=990005 Bio_Exp=0 id_job=os4_1 _ERROR_=0 _N_=16&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os4 job=1 idchem=211700 Bio_Exp=0 id_job=os4_1 _ERROR_=0 _N_=17&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: There were 17 observations read from the data set WORK.IDNEW1.&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: The data set WORK.BIO has 17 observations and 5 variables.&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: DATA statement used (Total process time):&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;real time 0.02 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;cpu time 0.03 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;114&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;115&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;116 proc print data=bio;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;117 run;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: There were 17 observations read from the data set WORK.BIO.&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: PROCEDURE PRINT used (Total process time):&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;real time 0.25 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;cpu time 0.25 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;118&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;119 /* Merging cla &amp;amp; bio files*/&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;120 data m1; merge cla bio;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;121 /*id_job=catx('_', id, job);*/&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;122 put _all_;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;123 run;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=1 idchem=990005 Cla_Exp=1 id_job=os1_1 Bio_Exp=0 _ERROR_=0 _N_=1&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=1 idchem=9900021 Cla_Exp=0 id_job=os1_1 Bio_Exp=1 _ERROR_=0 _N_=2&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=1 idchem=211700 Cla_Exp=0 id_job=os1_1 Bio_Exp=0 _ERROR_=0 _N_=3&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=211700 Cla_Exp=0 id_job=os1_2 Bio_Exp=0 _ERROR_=0 _N_=4&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=9900021 Cla_Exp=0 id_job=os1_2 Bio_Exp=1 _ERROR_=0 _N_=5&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=210701 Cla_Exp=0 id_job=os1_2 Bio_Exp=0 _ERROR_=0 _N_=6&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=990005 Cla_Exp=1 id_job=os1_2 Bio_Exp=0 _ERROR_=0 _N_=7&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=1 idchem=210701 Cla_Exp=0 id_job=os2_1 Bio_Exp=0 _ERROR_=0 _N_=8&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=1 idchem=990005 Cla_Exp=1 id_job=os2_1 Bio_Exp=0 _ERROR_=0 _N_=9&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=2 idchem=9900021 Cla_Exp=0 id_job=os2_2 Bio_Exp=1 _ERROR_=0 _N_=10&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=3 idchem=210701 Cla_Exp=0 id_job=os2_3 Bio_Exp=0 _ERROR_=0 _N_=11&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=3 idchem=990005 Cla_Exp=1 id_job=os2_3 Bio_Exp=0 _ERROR_=0 _N_=12&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os3 job=3 idchem=210701 Cla_Exp=0 id_job=os3_3 Bio_Exp=0 _ERROR_=0 _N_=13&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os3 job=1 idchem=211700 Cla_Exp=0 id_job=os3_1 Bio_Exp=0 _ERROR_=0 _N_=14&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os4 job=1 idchem=210701 Cla_Exp=0 id_job=os4_1 Bio_Exp=0 _ERROR_=0 _N_=15&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os4 job=1 idchem=990005 Cla_Exp=1 id_job=os4_1 Bio_Exp=0 _ERROR_=0 _N_=16&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os4 job=1 idchem=211700 Cla_Exp=0 id_job=os4_1 Bio_Exp=0 _ERROR_=0 _N_=17&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: There were 17 observations read from the data set WORK.CLA.&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: There were 17 observations read from the data set WORK.BIO.&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: The data set WORK.M1 has 17 observations and 6 variables.&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: DATA statement used (Total process time):&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;real time 0.04 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;cpu time 0.04 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;124&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;125 data try;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;126 set m1;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;127 id_job=catx('_', id, job);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;128 put _all_;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;129 run;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=1 idchem=990005 Cla_Exp=1 id_job=os1_1 Bio_Exp=0 _ERROR_=0 _N_=1&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=1 idchem=9900021 Cla_Exp=0 id_job=os1_1 Bio_Exp=1 _ERROR_=0 _N_=2&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=1 idchem=211700 Cla_Exp=0 id_job=os1_1 Bio_Exp=0 _ERROR_=0 _N_=3&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=211700 Cla_Exp=0 id_job=os1_2 Bio_Exp=0 _ERROR_=0 _N_=4&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=9900021 Cla_Exp=0 id_job=os1_2 Bio_Exp=1 _ERROR_=0 _N_=5&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=210701 Cla_Exp=0 id_job=os1_2 Bio_Exp=0 _ERROR_=0 _N_=6&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os1 job=2 idchem=990005 Cla_Exp=1 id_job=os1_2 Bio_Exp=0 _ERROR_=0 _N_=7&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=1 idchem=210701 Cla_Exp=0 id_job=os2_1 Bio_Exp=0 _ERROR_=0 _N_=8&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=1 idchem=990005 Cla_Exp=1 id_job=os2_1 Bio_Exp=0 _ERROR_=0 _N_=9&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=2 idchem=9900021 Cla_Exp=0 id_job=os2_2 Bio_Exp=1 _ERROR_=0 _N_=10&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=3 idchem=210701 Cla_Exp=0 id_job=os2_3 Bio_Exp=0 _ERROR_=0 _N_=11&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os2 job=3 idchem=990005 Cla_Exp=1 id_job=os2_3 Bio_Exp=0 _ERROR_=0 _N_=12&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os3 job=3 idchem=210701 Cla_Exp=0 id_job=os3_3 Bio_Exp=0 _ERROR_=0 _N_=13&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os3 job=1 idchem=211700 Cla_Exp=0 id_job=os3_1 Bio_Exp=0 _ERROR_=0 _N_=14&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os4 job=1 idchem=210701 Cla_Exp=0 id_job=os4_1 Bio_Exp=0 _ERROR_=0 _N_=15&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os4 job=1 idchem=990005 Cla_Exp=1 id_job=os4_1 Bio_Exp=0 _ERROR_=0 _N_=16&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;id=os4 job=1 idchem=211700 Cla_Exp=0 id_job=os4_1 Bio_Exp=0 _ERROR_=0 _N_=17&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: There were 17 observations read from the data set WORK.M1.&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: The data set WORK.TRY has 17 observations and 6 variables.&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: DATA statement used (Total process time):&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;real time 0.02 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;cpu time 0.02 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;130&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;131 proc print data=m1;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;132 Title"Merged Cla &amp;amp; Bio exposures";&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;133 run;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: There were 17 observations read from the data set WORK.M1.&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: PROCEDURE PRINT used (Total process time):&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;real time 0.26 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;cpu time 0.26 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;134&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;135 proc sql;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;136 select a.idchem, a.frequency / b.total as percentage format=Percent8.2&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;137 from (select idchem, count(id_job) as frequency from m1 group by idchem) as a,&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;138 (select count(distinct(id_job)) as total from m1) as b;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: The execution of this query involves performing one or more Cartesian product joins that can not be optimized.&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;139 quit;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE: PROCEDURE SQL used (Total process time):&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;real time 0.12 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;cpu time 0.11 seconds&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;140&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;141&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;142 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;154&lt;/DIV&gt;&lt;/DIV&gt;&lt;PRE class="sasLog"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 19 Nov 2019 16:08:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/SAS-code-for-counting-ge-ids-exposure/m-p/605434#M8308</guid>
      <dc:creator>ak2011</dc:creator>
      <dc:date>2019-11-19T16:08:45Z</dc:date>
    </item>
    <item>
      <title>Re: SAS code for counting %ge ids exposure</title>
      <link>https://communities.sas.com/t5/SAS-Studio/SAS-code-for-counting-ge-ids-exposure/m-p/605448#M8310</link>
      <description>&lt;P&gt;First thing you don't need 3 data steps :&lt;/P&gt;
&lt;PRE&gt;data work.idnew1;
   input id$ job idchem;
   /*if idchem=990005 then Cla_Exp=1; else Cla_Exp=0; */
   Cla_Exp = (idchem=990005);
   /*if idchem=9900021 then Bio_Exp=1; else Bio_Exp=0;*/
   Bio_Exp = (idchem=9900021);
   id_job=catx('_', id, job);
datalines;
os1 1 990005
os1 1 9900021
os1 1 211700
os1 2 211700
os1 2 9900021
os1 2 210701
os1 2 990005
os2 1 210701
os2 1 990005
os2 2 9900021
os2 3 210701
os2 3 990005
os3 3 210701
os3 1 211700
os4 1 210701
os4 1 990005
os4 1 211700
;
run;&lt;/PRE&gt;
&lt;P&gt;The code I use&lt;/P&gt;
&lt;PRE&gt;Cla_Exp = (idchem=990005);&lt;/PRE&gt;
&lt;P&gt;uses the logic comparison result in SAS will have 1 for true and 0 for false.&lt;/P&gt;
&lt;P&gt;Minor detail but executes quicker than If/then/else.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Second:&lt;/P&gt;
&lt;P&gt;This bit is not very clear.&lt;/P&gt;
&lt;PRE&gt;For cla: idchem=990005, For the os1's :os1-1 and os1-2, cla_exp for each = 1(but same id(os1), so 1 subject(id) exposed):

For the os2;s: os2-1(1 exposure) and os2-2(1 exposure) but same id so 1 subject exposed:

For For the os3's: No exposure ie zero (0)

For the os4;s: os4-1(1 exposure)  1 subject exposed:

So %ge id exposure for idchem=99005 is 3/4=75%&lt;/PRE&gt;
&lt;P&gt;I think what you are asking is first find the maximum value of the exposure for each id. Then the percentage of 1's from that.&lt;/P&gt;
&lt;P&gt;By picking a 1/0 coding scheme you actual make this quite easy. The MEAN of a 1/0 coded variable is the percentage of 1's as a decimal.&lt;/P&gt;
&lt;P&gt;This uses my data set above:&lt;/P&gt;
&lt;PRE&gt;Proc summary data= work.idnew1 nway;
class id;
var Cla_Exp Bio_Exp;
output out=work.summary max=;
run;

proc summary data=work.summary ;
var Cla_Exp Bio_Exp ;
output out=work.want(drop=_type_ _freq_) mean=;
run;

proc print data=work.want;
format  Cla_Exp Bio_Exp percent8.2;
run;&lt;/PRE&gt;
&lt;P&gt;As a learning bit for future code. You may find it very advantageous when having a group of variables with a common theme, such as Exposure, to use that theme as the stem of variable names instead of a suffix.&lt;/P&gt;
&lt;P&gt;Use&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Exp_Cla Exp_Bio&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;instead of&lt;/P&gt;
&lt;PRE&gt;Cla_Exp Bio_Exp&lt;/PRE&gt;
&lt;P&gt;Why? SAS will allow you in data steps and many procedures (NOT Proc SQL) to reference a list of variables with a common stem with a short cut such as EXP_:&amp;nbsp; &amp;lt;= note the colon after the stem. You can use this list in Drop or Keep statements, Array definitions, and functions that take a list of variables such as MAX, MIN, MEAN, STD and such like: x = sum(of Exp_:); Which may be of interest as this sum would the number of different exposures some Id had(if the data is structured correctly).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your request for the b) elements is even more vague. There are many ways to do association descriptions and I'm not at all sure what you may want with that one. I think that you need to explicitly show the series or calculations you want.&lt;/P&gt;</description>
      <pubDate>Tue, 19 Nov 2019 20:53:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/SAS-code-for-counting-ge-ids-exposure/m-p/605448#M8310</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2019-11-19T20:53:32Z</dc:date>
    </item>
    <item>
      <title>Re: SAS code for counting %ge ids exposure</title>
      <link>https://communities.sas.com/t5/SAS-Studio/SAS-code-for-counting-ge-ids-exposure/m-p/605832#M8322</link>
      <description>Thanks very much.&lt;BR /&gt;ak</description>
      <pubDate>Wed, 20 Nov 2019 16:30:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Studio/SAS-code-for-counting-ge-ids-exposure/m-p/605832#M8322</guid>
      <dc:creator>ak2011</dc:creator>
      <dc:date>2019-11-20T16:30:40Z</dc:date>
    </item>
  </channel>
</rss>

