DATA Step, Macro, Functions and more

average out and create new observation

Accepted Solution Solved
Reply
Contributor
Posts: 33
Accepted Solution

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
PROC Star
Posts: 283

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

View solution in original post


All Replies
Solution
‎05-03-2017 01:58 AM
PROC Star
Posts: 283

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: 33

Re: average out and create new observation

Posted in reply to novinosrin

Thanks a lot.

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 109 views
  • 0 likes
  • 2 in conversation