<?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 Summary of ID presence across all the datasets in a library in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Summary-of-ID-presence-across-all-the-datasets-in-a-library/m-p/729041#M226849</link>
    <description>&lt;P&gt;Hi Community,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to solve a unique requirement and need your help if an efficient way exists to get this done.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have &amp;gt;10 datasets in my library and each have an ID. I need to create a dataset to as a summary of if an ID is present in each dataset.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt; data CLASS(label='Student Data');
   infile datalines dsd truncover;
   input ID:$2. Sex:$1. Age:2. Height:3.2 Weight:2.2;
 datalines;
 1, M, 14, 69, 112.5
 2, F, 13, 56.5, 84
 3, F, 13, 65.3, 98
 4, F, 14, 62.8, 102.5
 5, M, 14, 63.5, 102.5
 ;
 run;


  data SUBCLASS1(label='Student Data');
   infile datalines dsd truncover;
   input ID:$2. Sex:$1. Age:2. Height:3.2 Weight:2.2;
 datalines;
 1, M ,14, 69 ,112.5
 3, F ,13 ,65.3, 98
 5, M ,14 ,63.5, 102.5
 ;
 run;

   data SUBCLASS2(label='Student Data');
   infile datalines dsd truncover;
   input ID:$2. Sex:$1. Age:2. Height:3.2 Weight:2.2;
 datalines;
 2, F, 13, 56.5, 84
 3, F, 13, 65.3, 98
 5, M, 14, 63.5, 102.5
 ;
 run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Based on the datasets created above.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need my output to look like this:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;CLASS&lt;/TD&gt;&lt;TD&gt;SUBCLASS1&lt;/TD&gt;&lt;TD&gt;SUBCLASS2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Class&lt;/TD&gt;&lt;TD&gt;Subclass1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Class&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;Subclass2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Class&lt;/TD&gt;&lt;TD&gt;Subclass1&lt;/TD&gt;&lt;TD&gt;Subclass2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;Class&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;Class&lt;/TD&gt;&lt;TD&gt;Subclass1&lt;/TD&gt;&lt;TD&gt;Subclass2&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 for your time and effort.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best,&amp;nbsp;&lt;/P&gt;&lt;P&gt;SC.&lt;/P&gt;</description>
    <pubDate>Thu, 25 Mar 2021 13:14:33 GMT</pubDate>
    <dc:creator>shasank</dc:creator>
    <dc:date>2021-03-25T13:14:33Z</dc:date>
    <item>
      <title>Summary of ID presence across all the datasets in a library</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Summary-of-ID-presence-across-all-the-datasets-in-a-library/m-p/729041#M226849</link>
      <description>&lt;P&gt;Hi Community,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to solve a unique requirement and need your help if an efficient way exists to get this done.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have &amp;gt;10 datasets in my library and each have an ID. I need to create a dataset to as a summary of if an ID is present in each dataset.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt; data CLASS(label='Student Data');
   infile datalines dsd truncover;
   input ID:$2. Sex:$1. Age:2. Height:3.2 Weight:2.2;
 datalines;
 1, M, 14, 69, 112.5
 2, F, 13, 56.5, 84
 3, F, 13, 65.3, 98
 4, F, 14, 62.8, 102.5
 5, M, 14, 63.5, 102.5
 ;
 run;


  data SUBCLASS1(label='Student Data');
   infile datalines dsd truncover;
   input ID:$2. Sex:$1. Age:2. Height:3.2 Weight:2.2;
 datalines;
 1, M ,14, 69 ,112.5
 3, F ,13 ,65.3, 98
 5, M ,14 ,63.5, 102.5
 ;
 run;

   data SUBCLASS2(label='Student Data');
   infile datalines dsd truncover;
   input ID:$2. Sex:$1. Age:2. Height:3.2 Weight:2.2;
 datalines;
 2, F, 13, 56.5, 84
 3, F, 13, 65.3, 98
 5, M, 14, 63.5, 102.5
 ;
 run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Based on the datasets created above.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need my output to look like this:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;CLASS&lt;/TD&gt;&lt;TD&gt;SUBCLASS1&lt;/TD&gt;&lt;TD&gt;SUBCLASS2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Class&lt;/TD&gt;&lt;TD&gt;Subclass1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Class&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;Subclass2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Class&lt;/TD&gt;&lt;TD&gt;Subclass1&lt;/TD&gt;&lt;TD&gt;Subclass2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;Class&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;Class&lt;/TD&gt;&lt;TD&gt;Subclass1&lt;/TD&gt;&lt;TD&gt;Subclass2&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 for your time and effort.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best,&amp;nbsp;&lt;/P&gt;&lt;P&gt;SC.&lt;/P&gt;</description>
      <pubDate>Thu, 25 Mar 2021 13:14:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Summary-of-ID-presence-across-all-the-datasets-in-a-library/m-p/729041#M226849</guid>
      <dc:creator>shasank</dc:creator>
      <dc:date>2021-03-25T13:14:33Z</dc:date>
    </item>
    <item>
      <title>Re: Summary of ID presence across all the datasets in a library</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Summary-of-ID-presence-across-all-the-datasets-in-a-library/m-p/729051#M226854</link>
      <description>&lt;P&gt;Study this code:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data CLASS(label='Student Data');
infile datalines dsd truncover;
input ID:$2. Sex:$1. Age:2. Height:3.2 Weight:2.2;
datalines;
1, M, 14, 69, 112.5
2, F, 13, 56.5, 84
3, F, 13, 65.3, 98
4, F, 14, 62.8, 102.5
5, M, 14, 63.5, 102.5
;

data SUBCLASS1(label='Student Data');
infile datalines dsd truncover;
input ID:$2. Sex:$1. Age:2. Height:3.2 Weight:2.2;
datalines;
1, M ,14, 69 ,112.5
3, F ,13 ,65.3, 98
5, M ,14 ,63.5, 102.5
;

data SUBCLASS2(label='Student Data');
infile datalines dsd truncover;
input ID:$2. Sex:$1. Age:2. Height:3.2 Weight:2.2;
datalines;
2, F, 13, 56.5, 84
3, F, 13, 65.3, 98
5, M, 14, 63.5, 102.5
;
 
proc sql noprint;
select catx(".",libname,memname) into :datasets separated by " "
from dictionary.tables
where libname = "WORK";
quit;

data all / view=all;
length inname $41 dsname dname $32;
set &amp;amp;datasets. indsname=inname;
dsname = scan(inname,2,".");
dname = dsname;
keep id dsname dname;
run;

proc sort
  data=all
  out=want
  nodupkey
;
by id dsname;
run;

proc report data=want;
column id dsname,dname n;
define id /group;
define dsname / "" display;
define dname / "" across;
define n / noprint;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 25 Mar 2021 13:42:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Summary-of-ID-presence-across-all-the-datasets-in-a-library/m-p/729051#M226854</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2021-03-25T13:42:55Z</dc:date>
    </item>
    <item>
      <title>Re: Summary of ID presence across all the datasets in a library</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Summary-of-ID-presence-across-all-the-datasets-in-a-library/m-p/729108#M226869</link>
      <description>&lt;P&gt;Using the INDSNAME option on a set command will deal with this in a single data step.&amp;nbsp; If you have a short list of datasets then they can be literally entered into the code.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data CLASS(label='Student Data');
   infile datalines dsd truncover;
   input ID:$2. Sex:$1. Age:2. Height:3.2 Weight:2.2;
 datalines;
 1, M, 14, 69, 112.5
 2, F, 13, 56.5, 84
 3, F, 13, 65.3, 98
 4, F, 14, 62.8, 102.5
 5, M, 14, 63.5, 102.5
 run;


  data SUBCLASS1(label='Student Data');
   infile datalines dsd truncover;
   input ID:$2. Sex:$1. Age:2. Height:3.2 Weight:2.2;
 datalines;
 1, M ,14, 69 ,112.5
 3, F ,13 ,65.3, 98
 5, M ,14 ,63.5, 102.5
run;

   data SUBCLASS2(label='Student Data');
   infile datalines dsd truncover;
   input ID:$2. Sex:$1. Age:2. Height:3.2 Weight:2.2;
 datalines;
 2, F, 13, 56.5, 84
 3, F, 13, 65.3, 98
 5, M, 14, 63.5, 102.5
run;


data want (drop=i);
  do until (last.id);
    set class subclass1 subclass2 indsname=dsn;
    by id;
    array dsn_dummys {*} $1  subclass1 subclass2 ;
    array dsn_names  {2} $20  _temporary_ ('WORK.SUBCLASS1','WORK.SUBCLASS2');
    if dsn='WORK.CLASS' then continue;
    i=whichc(dsn,of dsn_names{*});
    dsn_dummys{i}='Y';
  end;
  do i=1 to dim(dsn_dummys);
    if dsn_dummys{i}^='Y' then dsn_dummys{i}='N';
  end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Or you can put the dataset list (and corresponding dummy vars) in macrovars:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let csv_list='WORK.SUBCLASS1','WORK.SUBCLASS2';
%LET var_list=subclass1 subclass2 ;
%let n_dsn=%sysfunc(countw(&amp;amp;var_list));

data want (drop=i);
  do until (last.id);
    set class &amp;amp;var_list indsname=dsn;
    by id;
    array dsn_dummys {*} $1  &amp;amp;var_list ;
    array dsn_names  {&amp;amp;n_dsn} $20  _temporary_ (&amp;amp;csv_list);
    if dsn='WORK.CLASS' then continue;
    i=whichc(dsn,of dsn_names{*});
    dsn_dummys{i}='Y';
  end;
  do i=1 to dim(dsn_dummys);
    if dsn_dummys{i}^='Y' then dsn_dummys{i}='N';
  end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;And, as&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt;&amp;nbsp;showed, you can use proc sql to create the macrovars.&amp;nbsp; This, slightly modified code, could prefix the code above, replacing the %LET statements:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
  select quote(catx(".",libname,memname)) into :csv_list  separated by ","
    from dictionary.tables
    where libname = "WORK" and memname^='CLASS';
  select memname into :var_list separated by ' '
    from dictionary.tables
    where libname = "WORK" and memname^='CLASS';
quit;
&lt;/CODE&gt;&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;</description>
      <pubDate>Thu, 25 Mar 2021 15:53:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Summary-of-ID-presence-across-all-the-datasets-in-a-library/m-p/729108#M226869</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2021-03-25T15:53:56Z</dc:date>
    </item>
  </channel>
</rss>

