Solved
Regular Learner
Posts: 1

# How do I subset based on the cumulative change of a variable from its previously selected value?

Hi all,

I am new to SAS and I find myself needing your help for the first time, so apologies in advance for any mistakes.

I have a dataset containing the variables 'Price' and 'Time' for every transaction executed in a given period for a stock.

I need to subset this dataset by only selecting the observations for which the cumulative price change is greater than a constant amount 'c'.

So that:

>the first observation of the new dataset is the same as the original

>then, we select only observations for which the absolute difference between Price(i) and the previously selected Price(i)* is greater than or equal to a constant c, say 0.25.

I am using SAS University Edition.

Accepted Solutions
Solution
‎04-16-2018 11:01 AM
Posts: 1,831

## Re: How do I subset based on the cumulative change of a variable from its previously selected value?

Try next code:

``````%let c = 0.25;
data want;
set have;
retain prev_selected_price;

if _N_=1 then do;
output;
prev_selected_price = price;
end;
else if abs(price - prev_selected_price) ge  &c
then do;
output;
prev_selected_price = price;  /* ??? */
end;
run;
``````

All Replies
Solution
‎04-16-2018 11:01 AM
Posts: 1,831

## Re: How do I subset based on the cumulative change of a variable from its previously selected value?

Try next code:

``````%let c = 0.25;
data want;
set have;
retain prev_selected_price;

if _N_=1 then do;
output;
prev_selected_price = price;
end;
else if abs(price - prev_selected_price) ge  &c
then do;
output;
prev_selected_price = price;  /* ??? */
end;
run;
``````
☑ This topic is solved.