## Extract a number and apply to some column

Solved
Occasional Contributor
Posts: 14

# 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

Accepted Solutions
Solution
‎08-08-2013 01:15 PM
Super User
Posts: 6,754

## 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;

All Replies
Solution
‎08-08-2013 01:15 PM
Super User
Posts: 6,754

## 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;

Super Contributor
Posts: 1,636

## 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;

Occasional Contributor
Posts: 14

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

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

Thanks~

- Matt

🔒 This topic is solved and locked.