Solved
Contributor
Posts: 55

# average out and create new observation

data have;

input @1 subject 3.

@4 code \$1.

@6 result 3.

;

datalines;
101 A 120
101 A 130
101 B 129
102 C 45
102 C 124
103 D 222
103 D 234
103 E 123
103 E 123

;

run;

expected ouput i want like this where i am adding new obs for average of each unique subject and code.I tried using first.subject and first.code but its still retaining previous avg value in new subject.Can anyone help how to achieve it.

Thanks.

subject code result average
101       A     120
101       A     130
101                        125
101       B     129
101                        129
102      C      45
102      C     124
102                        84.5
103      D      222
103      D      234
103                        228
103      E      123
103      E      123
103                        123

Accepted Solutions
Solution
‎05-03-2017 01:58 AM
Super User
Posts: 2,078

## Re: average out and create new observation

[ Edited ]

proc sort data=have;

by subject code;

run;

data want;

set have;

by subject code;

if first.code then do;

n=0;

temp=0;

end;

N+1;

temp+result;

output;

if last.code then do;

average=temp/n;

output;

end;

drop n temp;

run;

Regards,

Naveen Srinivasan

All Replies
Solution
‎05-03-2017 01:58 AM
Super User
Posts: 2,078

## Re: average out and create new observation

[ Edited ]

proc sort data=have;

by subject code;

run;

data want;

set have;

by subject code;

if first.code then do;

n=0;

temp=0;

end;

N+1;

temp+result;

output;

if last.code then do;

average=temp/n;

output;

end;

drop n temp;

run;

Regards,

Naveen Srinivasan

Contributor
Posts: 55