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

## Extract a number and apply to some column

Dear All,

What I have:

v1 v2

.    1

.    2

.    3

4   .

5   .

6   .

The last non-missing value of v2 ('3') is what I want to apply to v1 to get updated v2; Or, v2=3*v1.

Desire:

v2

1

2

3

3*4

3*5

3*6

Thanks!~

- Matt

1 ACCEPTED SOLUTION

Accepted Solutions
PROC Star

## Re: Extract a number and apply to some column

Give this a try and see if it does what you want:

data want;

set have;

retain last_nonmissing_v2;

if v2 > . then last_nonmissing_v2 = v2;

else v2 = v1 * last_nonmissing_v2;

run;

Optionally, you might want to drop last_nonmissing_v2;

3 REPLIES 3
PROC Star

## Re: Extract a number and apply to some column

Give this a try and see if it does what you want:

data want;

set have;

retain last_nonmissing_v2;

if v2 > . then last_nonmissing_v2 = v2;

else v2 = v1 * last_nonmissing_v2;

run;

Optionally, you might want to drop last_nonmissing_v2;

Lapis Lazuli | Level 10

## Re: Extract a number and apply to some column

data have;

input v1 v2;

cards;

.    1

.    2

.    3

4   .

5   .

6   .

;

data want(drop=ttt);

retain ttt 1;

set have;

ttt=ifn((not missing(v1)*not missing(lag(v2))=1),lag(v2),ttt);

v2=ifn(not missing(v2),v2,v1*ttt);

proc print;run;

Calcite | Level 5

## Re: Extract a number and apply to some column

Thank You everyone for your fast reply!

It works; however, I took the simpler one that I can understand.

Thanks~

- Matt

Discussion stats
• 3 replies
• 600 views
• 4 likes
• 3 in conversation