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 (fixed value in the data set)
m (fixed data set and modified second data step)
Line 4: Line 4:
 
input id score @@;
 
input id score @@;
 
datalines;  
 
datalines;  
100 10 100 13 100 16 101 13 100 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 14: Line 14:
 
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>

Revision as of 16:42, 10 October 2015

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