I'm trying to get the 'number at risk' (n in my code below) using xaxistable on my sgplot figure. However, I was expecting the 'n' to be aligned with the x axis timepoints (0, 6, 12, 18, 24, 30, and 36). Instead, the n is showing up at every timepoint where there is an actual change. So there are many more 'n' on the figure than needed - and not the ones I want. Does anyone know how to get the 'n' for your predefined x axis timepoints? My code is below. Figure is attached.
proc sgplot data=b11 ;
step x=fuptime y=s/group=trivex name='s' ;
xaxistable n / x=fuptime class=trivex location=outside colorgroup=trivex separator
;
styleattrs
datacontrastcolors=(black gray)
datalinepatterns=(solid);
format trivex trivex.;
yaxis values=(0.5 to 1.0 by 0.1);
xaxis values=(0 to 36 by 6);
yaxis label="Proportion of Patients with No Ulcer Recurrence (%)";
label fuptime=Length of Follow-Up (Months);
label trivex=Phlebectomy;
keylegend 's';
run;
You could edit your dataset to delete n content when timepoint is not in your list.
Yes, I would recommend editing the data. Use timelist option in proc lifetest to limit data.
Suggestions by Reeza and Rodriguez are in the right direction. See the SAS 9.4 (last) example in the Survival Plot article. While the Step plot uses X=TIME, the xaxistable uses the optional X=TATRISK. See the data set shown in the article. TATRISK has non-missing values only at 0, 500, 1000 and so on, so the ATRISK values are shown only where TATRISK is non-missing. Full program is provided in a link at the bottom of the article.
Thanks everyone! Huge help.
All the best,
Corey
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.