BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Jedrzej
Obsidian | Level 7

Hi,

 

i have set with one numeric variable which gives me different results of mean when sorted.

 

 

data b;
format a best20.;
 input a;
datalines;
0.187
0.171
0.183
0.08
;
;run;
 
proc sort data=b; by a;run;
 
proc summary data=b nway missing noprint    mean  ;
 var a;
 output out = out_b  mean=mean  ;
 RUN;
 
result when sorted =0.15525
result when not sorted = 0.15524999999999
 
WHY ?!?! 
1 ACCEPTED SOLUTION

Accepted Solutions
4 REPLIES 4
PaigeMiller
Diamond | Level 26

This exact problem has been discussed in great length. Please search today's posts, and you will find the answer.

 

But why are you posting this anyway, a duplicate of an earlier thread? Is it homework?

--
Paige Miller
Jedrzej
Obsidian | Level 7

my friend asked me today about it and i didn't find soultion for this. I was curious so i posted this question, didn't know he done the same.

sorry,

Reeza
Super User

https://communities.sas.com/t5/Base-SAS-Programming/proc-summary-calculating-mean/m-p/414821

 


@Jedrzej wrote:

 

 
WHY ?!?! 

RTM - there's an entire chapter on this topic and it's not really a SAS issue, it's a 'binary computer issue'. 

 

http://documentation.sas.com/?docsetId=lrcon&docsetTarget=p0ji1unv6thm0dn1gp4t01a1u0g6.htm&docsetVer...

Tom
Super User Tom
Super User

Looking at all possible ways to order those four numbers we see that there are two different means that can result.

data _null_;
  array x (4) (0.187 0.171 0.183 0.08) ;
  do j=1 to fact(dim(x));
    call allperm(j, of x[*]);
    mean=mean(of x(*)) ;
    put j= z2. (x:) (=) mean= best20.18;
  end;
run;
j=01 x1=0.187 x2=0.171 x3=0.183 x4=0.08 mean=0.15524999999999
j=02 x1=0.187 x2=0.171 x3=0.08 x4=0.183 mean=0.15525
j=03 x1=0.187 x2=0.08 x3=0.171 x4=0.183 mean=0.15525
j=04 x1=0.08 x2=0.187 x3=0.171 x4=0.183 mean=0.15525
j=05 x1=0.08 x2=0.187 x3=0.183 x4=0.171 mean=0.15525
j=06 x1=0.187 x2=0.08 x3=0.183 x4=0.171 mean=0.15525
j=07 x1=0.187 x2=0.183 x3=0.08 x4=0.171 mean=0.15525
j=08 x1=0.187 x2=0.183 x3=0.171 x4=0.08 mean=0.15525
j=09 x1=0.183 x2=0.187 x3=0.171 x4=0.08 mean=0.15525
j=10 x1=0.183 x2=0.187 x3=0.08 x4=0.171 mean=0.15525
j=11 x1=0.183 x2=0.08 x3=0.187 x4=0.171 mean=0.15525
j=12 x1=0.08 x2=0.183 x3=0.187 x4=0.171 mean=0.15525
j=13 x1=0.08 x2=0.183 x3=0.171 x4=0.187 mean=0.15525
j=14 x1=0.183 x2=0.08 x3=0.171 x4=0.187 mean=0.15525
j=15 x1=0.183 x2=0.171 x3=0.08 x4=0.187 mean=0.15525
j=16 x1=0.183 x2=0.171 x3=0.187 x4=0.08 mean=0.15524999999999
j=17 x1=0.171 x2=0.183 x3=0.187 x4=0.08 mean=0.15524999999999
j=18 x1=0.171 x2=0.183 x3=0.08 x4=0.187 mean=0.15525
j=19 x1=0.171 x2=0.08 x3=0.183 x4=0.187 mean=0.15525
j=20 x1=0.08 x2=0.171 x3=0.183 x4=0.187 mean=0.15525
j=21 x1=0.08 x2=0.171 x3=0.187 x4=0.183 mean=0.15525
j=22 x1=0.171 x2=0.08 x3=0.187 x4=0.183 mean=0.15525
j=23 x1=0.171 x2=0.187 x3=0.08 x4=0.183 mean=0.15525
j=24 x1=0.171 x2=0.187 x3=0.183 x4=0.08 mean=0.15524999999999
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
  • 4 replies
  • 1541 views
  • 2 likes
  • 4 in conversation