<?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: Create a conditional count variables for multiple dataset variables in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748265#M235000</link>
    <description>&lt;P&gt;I see, that's a typo in your source data.&lt;/P&gt;
&lt;P&gt;Two ways, SQL and data step:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input PtID $ var1  var2;
datalines;
1        5       5
1        6       6
2        6       6
2       7        6
;

proc sql;
create table want1 as
  select
    *,
    sum(var1 = 6) as count_var1,
    sum(var2 = 6) as count_var2
  from have
  group by ptid
;
quit;

data want2;
if 0 then set have;
count_var1 = 0;
count_var2 = 0;
do until (last.ptid);
  set have;
  by ptid;
  count_var1 + (var1 = 6);
  count_var2 + (var2 = 6);
end;
do until (last.ptid);
  set have;
  by ptid;
  output;
end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 16 Jun 2021 07:49:41 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2021-06-16T07:49:41Z</dc:date>
    <item>
      <title>Create a conditional count variables for multiple dataset variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748262#M234997</link>
      <description>&lt;P&gt;This is a dataset I have:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PtID var1&amp;nbsp; var2&lt;/P&gt;
&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5&lt;/P&gt;
&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6&lt;/P&gt;
&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6&lt;/P&gt;
&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would like to create a count&amp;nbsp; variable (by PtID) for var 1 &amp;amp; 2, which calculates how many '6' are present in these variables for each PtID&lt;/P&gt;
&lt;P&gt;Here is the expected dataset:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PtID var1&amp;nbsp; var2&amp;nbsp; count_var1 count_var2&lt;/P&gt;
&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;
&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;
&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Could anyone suggest a data step using an array for this process?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 16 Jun 2021 07:32:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748262#M234997</guid>
      <dc:creator>Abishekaa</dc:creator>
      <dc:date>2021-06-16T07:32:49Z</dc:date>
    </item>
    <item>
      <title>Re: Create a conditional count variables for multiple dataset variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748264#M234999</link>
      <description>&lt;P&gt;Why do you want count_var2 = 2 for ptid 2 when there's only one 6 in that group for var2?&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/102730"&gt;@Abishekaa&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;This is a dataset I have:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PtID var1&amp;nbsp; var2&lt;/P&gt;
&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5&lt;/P&gt;
&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6&lt;/P&gt;
&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6&lt;/P&gt;
&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would like to create a count&amp;nbsp; variable (by PtID) for var 1 &amp;amp; 2, which calculates how many '6' are present in these variables for each PtID&lt;/P&gt;
&lt;P&gt;Here is the expected dataset:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PtID var1&amp;nbsp; var2&amp;nbsp; count_var1 count_var2&lt;/P&gt;
&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;
&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;
&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Could anyone suggest a data step using an array for this process?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 16 Jun 2021 07:44:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748264#M234999</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2021-06-16T07:44:43Z</dc:date>
    </item>
    <item>
      <title>Re: Create a conditional count variables for multiple dataset variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748265#M235000</link>
      <description>&lt;P&gt;I see, that's a typo in your source data.&lt;/P&gt;
&lt;P&gt;Two ways, SQL and data step:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input PtID $ var1  var2;
datalines;
1        5       5
1        6       6
2        6       6
2       7        6
;

proc sql;
create table want1 as
  select
    *,
    sum(var1 = 6) as count_var1,
    sum(var2 = 6) as count_var2
  from have
  group by ptid
;
quit;

data want2;
if 0 then set have;
count_var1 = 0;
count_var2 = 0;
do until (last.ptid);
  set have;
  by ptid;
  count_var1 + (var1 = 6);
  count_var2 + (var2 = 6);
end;
do until (last.ptid);
  set have;
  by ptid;
  output;
end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 16 Jun 2021 07:49:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748265#M235000</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2021-06-16T07:49:41Z</dc:date>
    </item>
    <item>
      <title>Re: Create a conditional count variables for multiple dataset variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748266#M235001</link>
      <description>&lt;P&gt;I think this is difficult to achieve with data step because it is not possible to check the value of observations that have not been read.&lt;/P&gt;
&lt;P&gt;If you use proc sql, it is relatively simple.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input PtID var1 var2;
datalines;
1 5 5
1 6 6
2 6 6
2 7 6
;
run;

proc sql;
  create table want as
    select A.*
          ,(select count(var1) 
            from have as B 
            where A.PtID=B.PtID and var1=6) as count_var1
          ,(select count(var1) 
            from have as B 
            where A.PtID=B.PtID and var2=6) as count_var2 
    from have as A
  ;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 16 Jun 2021 07:50:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748266#M235001</guid>
      <dc:creator>japelin</dc:creator>
      <dc:date>2021-06-16T07:50:03Z</dc:date>
    </item>
    <item>
      <title>Re: Create a conditional count variables for multiple dataset variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748267#M235002</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/226565"&gt;@japelin&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;I think this is difficult to achieve with data step because it is not possible to check the value of observations that have not been read.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;That's where you use a Double DO (or DO Whitlock) loop. It mimics the SQL "remerge".&lt;/P&gt;</description>
      <pubDate>Wed, 16 Jun 2021 07:51:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748267#M235002</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2021-06-16T07:51:44Z</dc:date>
    </item>
    <item>
      <title>Re: Create a conditional count variables for multiple dataset variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748271#M235004</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;That's where you use a Double DO (or DO Whitlock) loop. It mimics the SQL "remerge".&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Oh! Thank you for letting me know!&lt;/P&gt;
&lt;P&gt;I will try it.&lt;/P&gt;</description>
      <pubDate>Wed, 16 Jun 2021 07:59:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748271#M235004</guid>
      <dc:creator>japelin</dc:creator>
      <dc:date>2021-06-16T07:59:44Z</dc:date>
    </item>
    <item>
      <title>Re: Create a conditional count variables for multiple dataset variables</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748273#M235005</link>
      <description>&lt;P&gt;The DATA step with a DOW loop may need extra sorting, SQL does that on the fly. Which method you use depends on the sort state of the dataset, and its size (data steps usually outperform SQL with large data when sorting/joining is involved). As long as the SQL finishes in seconds, there's no need for the more complicated DATA step code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Addendum:&lt;/P&gt;
&lt;P&gt;there are some things that can't be done in SQL or are very hard to do. Mainly this involves evaluating certain sequences of data, as the data step does this on its own, while you need to force SQL to recognize a certain sequence within a certain order of data. So if you need to compare observations according to the physical sequence in which they are stored in the dataset (e.g. with LAG and/or RETAIN), the DATA step always wins.&lt;/P&gt;</description>
      <pubDate>Wed, 16 Jun 2021 08:07:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-conditional-count-variables-for-multiple-dataset/m-p/748273#M235005</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2021-06-16T08:07:44Z</dc:date>
    </item>
  </channel>
</rss>

