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


data kaplan;

input time survival1;

cards;

4 .6

5 .55

6 .3

7 .1

9  0

;

run;

proc iml;

use kaplan;

read all  var{TIME SURVIVAL1} into DM;

close;

SURVIVAL1 = DM[,2]; TIME = DM[,1];

n = nrow(DM);

   

segment = J(nrow(DM),1,1); *print segment;

SS=J(nrow(survival1),1,1);

do i = 1 to n ;

if 1=n then SS=0;

else if  i< n-1 then SS=SURVIVAL1-SURVIVAL1[i+1];

end;

TT=J(nrow(time),1,1);

do i = 1 to n;

if 1=n then TT=0;                    

else if i < n-1  then TT=time[i+1]-time;

end;

create kaplann var{time  survival1 SS TT };

append;

quit;

data kaplan_sum;

set kaplann;

sur_time=SS*TT;

drop time  survival1;

run;

proc print data=kaplan_sum;

run;



This output is wrong, there is supposed to be just 4 observations. The 4th and fifth observation for SS is wrong.


SS= (.6-.55)+(.55-.3)+(.3-.1)+(.1-0)

TT= (5-4)+(6-5)+((7-6)+(9-7))

This is wrong.

i   SS  TT  TT*SS

10.0510.05
20.2510.25
30.2010.20
41.0011.00
51.0011.00

This is how the correct output is supposed to look like;

SS= (.6-.55)+(.55-.3)+(.3-.1)+(.1-0)

TT= (5-4)+(6-5)+((7-6)+(9-7))

  

i    SS   TT       SS*TT

1

0.05

1

        0.05

2

0.25

1

       0.25

3

0.20

1

       0.20

4

0.1

2

       0.2

1 ACCEPTED SOLUTION

Accepted Solutions
desireatem
Pyrite | Level 9

proc iml;

use kaplan;

read all  var{TIME SURVIVAL1} into DM;

close;

SURVIVAL1 = DM[,2]; TIME = DM[,1];

n = nrow(DM);

  

segment = J(nrow(DM),1,1); *print segment;

SS=J(nrow(survival1),1,1);

do i = 1 to n ;

if i=n then SS=0;

else if  i< n-1 then SS=SURVIVAL1-SURVIVAL1[i+1];

end;

TT=J(nrow(time),1,1);

do i = 1 to n;

if i=n then TT=0;                   

else if i < n-1  then TT=time[i+1]-time;

end;

create kaplann var{time  survival1 SS TT };

append;

quit;

data kaplan_sum;

set kaplann;

sur_time=SS*TT;

drop time  survival1;

run;

proc print data=kaplan_sum;

run;

View solution in original post

2 REPLIES 2
desireatem
Pyrite | Level 9

ANSWER

desireatem
Pyrite | Level 9

proc iml;

use kaplan;

read all  var{TIME SURVIVAL1} into DM;

close;

SURVIVAL1 = DM[,2]; TIME = DM[,1];

n = nrow(DM);

  

segment = J(nrow(DM),1,1); *print segment;

SS=J(nrow(survival1),1,1);

do i = 1 to n ;

if i=n then SS=0;

else if  i< n-1 then SS=SURVIVAL1-SURVIVAL1[i+1];

end;

TT=J(nrow(time),1,1);

do i = 1 to n;

if i=n then TT=0;                   

else if i < n-1  then TT=time[i+1]-time;

end;

create kaplann var{time  survival1 SS TT };

append;

quit;

data kaplan_sum;

set kaplann;

sur_time=SS*TT;

drop time  survival1;

run;

proc print data=kaplan_sum;

run;

sas-innovate-white.png

Special offer for SAS Communities members

Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.

 

View the full agenda.

Register now!

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
  • 2 replies
  • 1015 views
  • 0 likes
  • 1 in conversation