Hi, I am using SAS University Edition. I am trying to overlay a KM curve and PH curve to see if they match relatively well. I can overlay them, but the PH curves have lines connecting the starting point and ending point. Can someone help me remove these lines?
proc phreg data=Allhiv33;
class arm;
model (tL,tR)*status(0)=arm;
baseline out=bb covariates=covs survival=s cumhaz=Ht ;
run;
proc lifetest data=allhiv2 outsurv=c ;
time inf_time*delta(0);
strata arm;
run;
data b_new;
set bb;
length Z $27;
if arm="DMPA" then Z="PH DMPA";
if arm="IUD" then Z="PH IUD";
if arm="Jadelle" then Z="PH Jadelle";
run;
data c_new;
set c(rename=(survival=s inf_time=tR));
length Z $27;
if arm="DMPA" then Z="KM DMPA";
if arm="IUD" then Z="KM IUD";
if arm="Jadelle" then Z="KM Jadelle";
run;
data both_arms;
set b_new c_new;
run;
proc sgplot data=both_arms;
series x=tR y=s / group=Z ;
run;
** neither sgplot rids of connecting lines;
proc sgplot data=both_arms;
step y=s x=tR / group=z;
run;
Try sorting the data before you plot it:
proc sort data=both_arms;
by Z tR;
run;
Add missing values to create breaks in the lines:
data both_arms;
set b_new c_new;
by Z notsorted;
output;
if last.Z then do;
call missing(s);
output;
end;
run;
proc sgplot data=both_arms;
series x=tR y=s / group=Z break;
run;
Thanks PG for replying and helping me with this.
I have tried the suggested code and my problem is still persisting. I am playing around with the break option and trying to set different Y values to missing. Do you think I need to change all values of the last arm or tR (time) for the graph to display correctly. Additionally, maybe I need to also set first values to missing?
Thanks again and any more brain power is appreciated, but obviously not assumed.
Try sorting the data before you plot it:
proc sort data=both_arms;
by Z tR;
run;
Wow- sorting with the break option worked. Thank you both for helping solve this problem!
I don't think you need the missing values or the BREAK option, but I could be mistaken.
I just tried it again without the break option, and you're right. I just needed to sort my combined dataset. Thanks for the problem solving!
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.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.