DATA Step, Macro, Functions and more

Help with re coding variable - Need another set of eyes

Reply
Contributor
Posts: 55

Help with re coding variable - Need another set of eyes

Hi everyone,

Here are the variables I am working with:

ID
Assessment Date
Event Date

I need a variable to tell me which session that date corresponds to (Baseline, Follow Up, and Last Session).  The issue is that there are cases that only have 1 session and these 1 sessions are getting lumped in with the follow up sessions. Here is what I’ve done so far.

  1. Use the first and last function in SAS to create a FirstDate and LastDate variable using ChildID and Assessment date.
  2. If FirstDate = AssessmentDate Then session = Baseline
  3. If LastDate = EventDate Then session = Last Session

data Want; set Have;

by ID EventDate ;

if first.ID then FirstDate = AssessmentDate;

if last.ID then LastDate = AssessmentDate;

 

if FirstDate = AssessmentDate then Session = 1; /*Baseline*/

If LastDate = AssessmentDate then Session = 3; /*Last Session*/

 

 

 

Both of the codes below lumps those with only 1 session in with the sessions that should be follow up:

 

if FirstDate = LastDate and AssessmentDate = EventDate = then session = 4; /*Only 1 session*/

if firsthospdate NE assessmentdate_HW and firsthospdate=. and lasthospdate=. then Session = 2; /*Follow up*/  

 

Any help would be greatly appreciated!

Super User
Posts: 11,343

Re: Help with re coding variable - Need another set of eyes

Look up ELSE for use with IF-Then.

The ELSE part only gets assigned if the first is not true. Your code is evaluating both cases every time.

And since you are using a variable LASTDATE that should only have a value when LAST.ID you only want them evaluated when LAST.ID. So consider

If Last.Id then do;

   LastDate = AssessmentDate;

 

 

   If LastDate = AssessmentDate then Session = 3; /*Last Session*/

   if FirstDate = LastDate and AssessmentDate = EventDate = then session = 4; /*Only 1 session*/

   else if firsthospdate NE assessmentdate_HW and firsthospdate=. and lasthospdate=. then Session = 2;

End;

Ask a Question
Discussion stats
  • 1 reply
  • 172 views
  • 0 likes
  • 2 in conversation