BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
art297
Opal | Level 21

Just out of curiosity, can someone post a proc expand solution to the problem posed in the thread:

TIA,

Art

1 ACCEPTED SOLUTION

Accepted Solutions
PGStats
Opal | Level 21

In this particular case, one must do a little gymnastics to fix the beginning and end of the series :

data temp(drop=i first:) first(keep=first:);

set have end=done;

array v{*} v:;

array first{1024} (1024*.);

do i = 1 to dim(v);

    if v{i}=0 then call missing (v{i});

    else if missing(first{i}) then first{i} = v{i};

    end;

output temp;

if done then output first;

run;

proc expand data=temp out=expanded;

id id;

convert v: / method=join;

run;

data want;

if _n_=1 then set first;

set expanded;

array v{*} v:;

array first{*} first:;

do i = 1 to dim(v);

    if missing(v{i}) then

        if missing(first{i}) then v{i} = 0;

        else v{i} = first{i};

    else call missing(first{i});

    end;

drop i first:;

run;

PG

PG

View solution in original post

2 REPLIES 2
FriedEgg
SAS Employee

@art297,

I posted a PROC EXPAND example and another using PROC TRANSREG for good measure.

For further reading I would recommend the following topic from SAS-L:

http://marc.info/?t=139164201000004&r=1&w=2

PGStats
Opal | Level 21

In this particular case, one must do a little gymnastics to fix the beginning and end of the series :

data temp(drop=i first:) first(keep=first:);

set have end=done;

array v{*} v:;

array first{1024} (1024*.);

do i = 1 to dim(v);

    if v{i}=0 then call missing (v{i});

    else if missing(first{i}) then first{i} = v{i};

    end;

output temp;

if done then output first;

run;

proc expand data=temp out=expanded;

id id;

convert v: / method=join;

run;

data want;

if _n_=1 then set first;

set expanded;

array v{*} v:;

array first{*} first:;

do i = 1 to dim(v);

    if missing(v{i}) then

        if missing(first{i}) then v{i} = 0;

        else v{i} = first{i};

    else call missing(first{i});

    end;

drop i first:;

run;

PG

PG

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 898 views
  • 3 likes
  • 3 in conversation