🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Calcite | Level 5

## scaling variable in a dataset?

I'd like to know how to scale a variable between 0&1 in sas. Perhaps it's possible to do with proc stdize somehow?

1 ACCEPTED SOLUTION

Accepted Solutions
SAS Super FREQ

## scaling variable in a dataset?

If you want a linear transformation that maps your data to [0,1], use

proc stdize data=MyData out=StdOut method=RANGE;

var vrp;

run;

This maps min(vrp) to 0 and max(vrp) to 1. The transformation is

x --> (x - min(x))/range(x)

http://support.sas.com/documentation/cdl/en/statug/63962/HTML/default/viewer.htm#statug_stdize_sect0...

11 REPLIES 11
Super User

## scaling variable in a dataset?

It will be helpful to provide a bit more detail on what you hope to accomplish.

Calcite | Level 5

## scaling variable in a dataset?

I simply would like to make the variable vrp scaled between 0&1, the dataset is attached above if it helps..

Super User

## scaling variable in a dataset?

What are the rules for scaling between 0 and 1. How will both 116 and -118 map to the scale from 0 to 1?

You could just use the percentile, but depending on what you're doing that could make absolutely no sense.

Calcite | Level 5

## scaling variable in a dataset?

I need the variable vrp for my time-varying regression:

proc reg data=spainbj outest=brittenjonesspain;

model Identity= MKT MKT*lag(vrp) SMB SMB*lag(vrp) HML HML*lag(vrp) MOM MOM*lag(vrp)/noint;

run;

this is a britten-jones regression, where betas are portfolio weights. I use the variable vrp to make the portfolio weights time-varying according to lagged value of vrp. Now I need to scale the variable vrp, in order to get the portfolio weights/betas to change in a rational way. Hope this helps..

Super User

## scaling variable in a dataset?

you want to standardize this variable to avoid the influence of  scale?

proc stdize will help you. Sure there is also a function looks like stdize() to do it.

Ksharp

Calcite | Level 5

## scaling variable in a dataset?

Yes! I tried the proc stdize but couldn't get it working. Would someone be able to give me an example on how to proceed with the code here? Thanks in advance.

SAS Super FREQ

## scaling variable in a dataset?

If you want a linear transformation that maps your data to [0,1], use

proc stdize data=MyData out=StdOut method=RANGE;

var vrp;

run;

This maps min(vrp) to 0 and max(vrp) to 1. The transformation is

x --> (x - min(x))/range(x)

http://support.sas.com/documentation/cdl/en/statug/63962/HTML/default/viewer.htm#statug_stdize_sect0...

Calcite | Level 5

## scaling variable in a dataset?

wow, that was easy! Thanks rick!

Calcite | Level 5

## scaling variable in a dataset?

If I'd like to make the linear transformation between -1 and 1, how could that be done? Checked the methods from Rick's link, but none of them seem to fit this idea straight...

SAS Super FREQ

## scaling variable in a dataset?

Run PROC STDIZE with METHOD=RANGE. That creates a variable on [0,1].

Then run a data step that sends x --> 2*x-1. The new range is [-1,1]. For example:

data StdOut;

set StdOut;

vrp = 2*vrp - 1;

run;

Calcite | Level 5

## scaling variable in a dataset?

easy again, thanks a million rick!

Discussion stats
• 11 replies
• 15213 views
• 7 likes
• 5 in conversation