@RosieSAS wrote: Sorry that I didn't make my question clear. At first I only have the values of x1, then using x1 to get x2, then using x1 and x2 to get x3.
So there is no way to avoid making multiple passes through the data to do that.
PROC SQL syntax is easier to specify since you can use nested sub queries.
proc sql ;
create table want as
select step2.x1
, step2.x2
, (step2.x1_mean+mean(step2.x2)*(1-step2.x2**2) as x3
from (
select step1.x1
, step1.x1_mean
, x1_mean*(1-step1.x1**2) as x2
from (
select have.x1,mean(have.x1) as x1_mean from have
) step1
) step2
;
quit;
You probably don't need to use all of those aliases (step1,step2) in the variable references, but I just spelled it out in detail so you can see the sequential nature of the steps.
... View more