We always have this question in mind, while we do the SAS programming and here is the simple answer for that, we just need to use SUM statement and the FIRST.variable in the SET statement and then the RETAIN statement to calculate the observations count per subject.
By doing some minor modification we can calculate observations count per subject per visit also. (Just include visit variable in the BY variable list in PROC sort and First. variable list in datastep with SET statement).
For example:
data dsn;
input patid implants;
datalines;
1 3
1 1
1 2
1 1
2 1
2 2
3 1
4 2
3 1
4 5
2 3
1 6
;
run;
proc sort data=dsn;
by patid;
run;
data dsn1;
set dsn;
by patid;
cnt+1;
if first.patid then cnt=1;
run;
proc sort data=dsn1;
by patid descending cnt;
run;
data dsn2;
set dsn1;
by patid;
retain totcnt;
if first.patid then totcnt=cnt;
output;
run;
By doing some minor modification we can calculate observations count per subject per visit also. (Just include visit variable in the BY variable list in PROC sort and First. variable list in datastep with SET statement).
For example:
data dsn;
input patid implants;
datalines;
1 3
1 1
1 2
1 1
2 1
2 2
3 1
4 2
3 1
4 5
2 3
1 6
;
run;
proc sort data=dsn;
by patid;
run;
data dsn1;
set dsn;
by patid;
cnt+1;
if first.patid then cnt=1;
run;
proc sort data=dsn1;
by patid descending cnt;
run;
data dsn2;
set dsn1;
by patid;
retain totcnt;
if first.patid then totcnt=cnt;
output;
run;
proc print data=dsn2;
run;
Output: