BookmarkSubscribeRSS Feed
ksaser
Calcite | Level 5

I am looking for syntax to change the missing values of a variable to the average of the remaining values of the same variable

 

for example:

for the variable duration-

duration : 10 20 30 40 . . .  ( . meaning missing values )

I want to replace the three missing values with the average of 10 20 30 40. I want to repliate this over a variable having more than 1000 values.

 

Can anyone help me out ?

 

Many Thanks!

3 REPLIES 3
Ksharp
Super User
data have;
input duration;
cards;
10 
20 
30 
40 
. 
. 
. 
;
run;

proc stdize data=have missing=mean reponly out=want;
var _numeric_;
run;
RW9
Diamond | Level 26 RW9
Diamond | Level 26

As an option, you could also do:

proc sql;
  create table WANT as
  select  coalesce(DURATION,(select mean(DURATION) from HAVE)) as DURATION
  from    HAVE;
quit;
ChrisNZ
Tourmaline | Level 20

Not having a nested clause speeds things up a bit.

 

create table WANT as
select coalesce(DURATION, mean(DURATION) ) as DURATION
from HAVE;

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 1734 views
  • 6 likes
  • 4 in conversation