<?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 within variable describe response combinations in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/within-variable-describe-response-combinations/m-p/398737#M96484</link>
    <description>&lt;P&gt;Hello everyone and thanks for your help.&lt;/P&gt;&lt;P&gt;I am combining multiple datasets, I've created a flag for each dataset - e.g., d1, d2, d3 etc.&lt;/P&gt;&lt;P&gt;I have multiple observations per person and each observation can come from a&amp;nbsp;different dataset.&lt;/P&gt;&lt;P&gt;In this particular case, there are 3 possible datasets,&amp;nbsp;but I've limited my sample to only those whose data comes from two different datasets.&lt;/P&gt;&lt;P&gt;The data looks something like:&lt;/P&gt;&lt;P&gt;ID&amp;nbsp;&amp;nbsp; dataset&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d2&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d3&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d2&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d3&lt;/P&gt;&lt;P&gt;I want to find out how many people have data from d1/d2, how many from&amp;nbsp;d1/d3, and how many from&amp;nbsp;d2/d3.&lt;/P&gt;&lt;P&gt;(I am not interested in knowing how many observations come from each dataset - for example, for person 1 I do not want to know they have 4 observations from d1 and 1 observation from d2 - &amp;nbsp;I just want to know their data is from d1/d2).&lt;/P&gt;&lt;P&gt;I hope that makes sense...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 26 Sep 2017 07:08:06 GMT</pubDate>
    <dc:creator>gmejia</dc:creator>
    <dc:date>2017-09-26T07:08:06Z</dc:date>
    <item>
      <title>within variable describe response combinations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/within-variable-describe-response-combinations/m-p/398737#M96484</link>
      <description>&lt;P&gt;Hello everyone and thanks for your help.&lt;/P&gt;&lt;P&gt;I am combining multiple datasets, I've created a flag for each dataset - e.g., d1, d2, d3 etc.&lt;/P&gt;&lt;P&gt;I have multiple observations per person and each observation can come from a&amp;nbsp;different dataset.&lt;/P&gt;&lt;P&gt;In this particular case, there are 3 possible datasets,&amp;nbsp;but I've limited my sample to only those whose data comes from two different datasets.&lt;/P&gt;&lt;P&gt;The data looks something like:&lt;/P&gt;&lt;P&gt;ID&amp;nbsp;&amp;nbsp; dataset&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d2&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d3&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d1&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d2&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d3&lt;/P&gt;&lt;P&gt;I want to find out how many people have data from d1/d2, how many from&amp;nbsp;d1/d3, and how many from&amp;nbsp;d2/d3.&lt;/P&gt;&lt;P&gt;(I am not interested in knowing how many observations come from each dataset - for example, for person 1 I do not want to know they have 4 observations from d1 and 1 observation from d2 - &amp;nbsp;I just want to know their data is from d1/d2).&lt;/P&gt;&lt;P&gt;I hope that makes sense...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Sep 2017 07:08:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/within-variable-describe-response-combinations/m-p/398737#M96484</guid>
      <dc:creator>gmejia</dc:creator>
      <dc:date>2017-09-26T07:08:06Z</dc:date>
    </item>
    <item>
      <title>Re: within variable describe response combinations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/within-variable-describe-response-combinations/m-p/398752#M96488</link>
      <description>&lt;P&gt;Try this one:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data work.want(keep= Id d1d2 d1d3 d2d3);
   set work.have;
   by id;
   
   length inD1 inD2 inD3 d1d2 d1d3 d2d3 i 3;
   array in inD:;
   retain inD:;
   
   if first.id then do;
      call missing(of inD:);
   end;
   
   i = input(substr(dataset, 2), 1.);
   in{i} = 1;
   
   if last.id then do;
      d1d2 = inD1 and inD2;
      d1d3 = inD1 and inD3;
      d2d3 = inD2 and inD3;
      output;
   end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 26 Sep 2017 09:30:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/within-variable-describe-response-combinations/m-p/398752#M96488</guid>
      <dc:creator>error_prone</dc:creator>
      <dc:date>2017-09-26T09:30:40Z</dc:date>
    </item>
    <item>
      <title>Re: within variable describe response combinations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/within-variable-describe-response-combinations/m-p/398768#M96490</link>
      <description>&lt;P&gt;Given you said "multiple" datasets, it seems you might be dealing with several datasets, not just 2 or 3.&amp;nbsp; If that's the case then the program below will scale nicely.&amp;nbsp; Using the "if first.id and sum(of in{*})&amp;gt;=2 keeps only one record per id, and only those id's present in 2 or more datasets.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Using the&amp;nbsp;2-dimensional array DD&amp;nbsp;provides a convenient way to compactly assign all&amp;nbsp;2-dataset indicators.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input id  dataset :$2.  @@;
datalines;
1 d1  1 d2  1 d3
2 d3  2 d2
3 d3  3 d1
4 d2  4 d1
5 d3
6 d2
7 d1
run;

data want (drop=dataset _:);
  merge have (keep=id dataset where=(dataset='d1') in=in1)
        have (keep=id dataset where=(dataset='d2') in=in2)
        have (keep=id dataset where=(dataset='d3') in=in3) ;
  by id;
  array in {3} in1-in3;
  if first.id and sum(of in{*})&amp;gt;=2;

  array dd {3,3} _dum d1d2 d1d3
                 _dum _dum d2d3
                 _dum _dum _dum  ;
  do _row=1 to dim(in)-1;
    do _col=_row+1 to dim(in);
      if in{_row}=1 and in{_col}=1 then dd{_row,_col}=1;
    end;
  end;
run;

proc means data=want n missing;
  var d1d2--d2d3;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 26 Sep 2017 12:17:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/within-variable-describe-response-combinations/m-p/398768#M96490</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2017-09-26T12:17:07Z</dc:date>
    </item>
    <item>
      <title>Re: within variable describe response combinations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/within-variable-describe-response-combinations/m-p/398775#M96492</link>
      <description>&lt;P&gt;Is this a better mousetrap?&amp;nbsp; For convenience, I will assume you have up to 9 sources (so the maximum value is "d9") and the length of DATASET is $ 2.&amp;nbsp; If the actual data is different, adjustments can be made.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;length all_sources $ 27;&lt;/P&gt;
&lt;P&gt;do until (last.ID);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; by id;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; start = input(substr(dataset, 2), 1.);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; substr(all_sources, start*3-2, 2) = dataset;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;drop start;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc freq data=want;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; tables all_sources;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Sep 2017 12:43:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/within-variable-describe-response-combinations/m-p/398775#M96492</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-09-26T12:43:07Z</dc:date>
    </item>
    <item>
      <title>Re: within variable describe response combinations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/within-variable-describe-response-combinations/m-p/399405#M96729</link>
      <description>&lt;P&gt;It worked beautifully, thank you!&lt;/P&gt;</description>
      <pubDate>Thu, 28 Sep 2017 05:09:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/within-variable-describe-response-combinations/m-p/399405#M96729</guid>
      <dc:creator>gmejia</dc:creator>
      <dc:date>2017-09-28T05:09:50Z</dc:date>
    </item>
  </channel>
</rss>

