Extract a number and apply to some column

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 14
Accepted Solution

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: 5,082

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;

View solution in original post


All Replies
Solution
‎08-08-2013 01:15 PM
Super User
Posts: 5,082

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

Thank You everyone for your fast reply!

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

Thanks~

- Matt

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

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