As the first step in the decommissioning of sasCommunity.org the site has been converted to read-only mode.


Here are some tips for How to share your SAS knowledge with your professional network.


Difference between revisions of "Tips:Between and Within Group Counters"

From sasCommunity
Jump to: navigation, search
m
(gardening)
 
(2 intermediate revisions by one user not shown)
Line 1: Line 1:
Given a sorted data set, adding within and between group counters can be accomplished without the use of any IF statement logic.
+
Given a sorted data set, adding within and between group counters can be accomplished without the use of any [[IF statement]] logic.
 
<source lang="sas">
 
<source lang="sas">
 
data x;
 
data x;
input id score @@;
+
    input id score @@;
datalines;  
+
    datalines;  
100 10 100 13 100 16 101 13 10 99 102 20 102 22 102 24 102 26
+
100 10 100 13 100 16 101 13 101 99 102 20 102 22 102 24 102 26
 
;
 
;
 
</source>
 
</source>
Line 11: Line 11:
 
<source lang="sas">
 
<source lang="sas">
 
data x;
 
data x;
set x;
+
    set x;
by id;
+
    by id;
between + first.id;
+
    between + first.id;
within + (-first.id * within)+ 1;
+
    within + 1 - first.id * within;
 
run;
 
run;
 
</source></td>
 
</source></td>
Line 29: Line 29:
 
  9    103      26        3          4
 
  9    103      26        3          4
 
</pre></td></tr></table>
 
</pre></td></tr></table>
Posted with thanks to [http://support.sas.com/publishing/authors/schreier.html Howard Schreier] for the BETWEEN group idea (in a SAS-L posting).
+
Posted with thanks to [http://support.sas.com/publishing/authors/schreier.html Howard Schreier] for the BETWEEN group idea (in a [[SAS-L]] posting).
<noinclude>
+
 
[[Category:DATA Step]]
+
[[Category:BY Statement]]
+
</noinclude>
+
 
{{ExternalReadMore|http://support.sas.com/documentation/cdl/en/lrcon/62955/HTML/default/viewer.htm#a000761931.htm}}
 
{{ExternalReadMore|http://support.sas.com/documentation/cdl/en/lrcon/62955/HTML/default/viewer.htm#a000761931.htm}}
  
Line 40: Line 37:
  
 
<noinclude>
 
<noinclude>
 +
[[Category:DATA Step]]
 +
[[Category:BY Statement]]
 
[[Category:Tip in Use]]
 
[[Category:Tip in Use]]
 
</noinclude>
 
</noinclude>

Latest revision as of 17:18, 8 February 2017

Given a sorted data set, adding within and between group counters can be accomplished without the use of any IF statement logic.

data x;
    input id score @@;
    datalines; 
100 10 100 13 100 16 101 13 101 99 102 20 102 22 102 24 102 26
;
data x;
    set x;
    by id;
    between + first.id;
    within  + 1 - first.id * within;
run;
Obs     id    score    between    within
 1     100      10        1          1
 2     100      13        1          2
 3     100      16        1          3
 4     101      13        2          1
 5     101      99        2          2
 6     103      20        3          1
 7     103      22        3          2
 8     103      24        3          3
 9     103      26        3          4

Posted with thanks to Howard Schreier for the BETWEEN group idea (in a SAS-L posting).

....see also


Submitted By Mike Zdeb