a******p 发帖数: 414 | 1 我有个问题想请教一下这里的高手:
我在用proc lifetest 画survival plot时,
我想把strata &trt; 后面加个option: strata &trt / order=internal;
但&trt是character,所以我需要用format 和 informat.
问题是&trt是macro variable, 我不知道如何用format 和 informat.
多谢! | s*****a 发帖数: 2735 | 2 试试把lifetest放到macro里?
%macro test1;
proc lifetest XXX;
strata &trt / order=internal;
....;
run;
%mend test1;
%test1;
看看这样行不行?
--------------------
不知道你的&trt是怎么来的,能把&trt产生那一步也给出吗? | a******p 发帖数: 414 | 3 是的,我写的是survival的macro.
&trt是macro parameter
请看这个link:
http://support.sas.com/documentation/cdl/en/statug/65328/HTML/d
我的&trt是treatment, 可能是one two three 或更多arms
我在画survival plot后,在图的最下面treatment label: one three two.
我希望是one two three.
如果我想用option, order=internal,我需要把我的&trt先format ,然后在informat,
但我不知怎么把一个macro variable format 和 informat.
多谢!
【在 s*****a 的大作中提到】 : 试试把lifetest放到macro里? : %macro test1; : proc lifetest XXX; : strata &trt / order=internal; : ....; : run; : %mend test1; : %test1; : 看看这样行不行? : --------------------
| s*****a 发帖数: 2735 | 4 有两个问题:
1. 如果不是要放在loop里,或者要生成很多同样类型的图,为什么要生成&trt。生成&
trt的目的是什么?
2. 如果只是单纯的想在最下面legend里头改变treatment label,可以把survival
curve从proc lifetest output到一个dataset,然后用proc gplot 画出来。在gplot里
头用legend statement:
legend1 across=1 frame
label=(h=2 position=bottom j=c 'Treatment label:')
value=( h=2 'One' 'Three' 'Two');
不好意思,理解不太清楚。如果你能够把你最终想要的描述一下,或者能帮你更多。
【在 a******p 的大作中提到】 : 是的,我写的是survival的macro. : &trt是macro parameter : 请看这个link: : http://support.sas.com/documentation/cdl/en/statug/65328/HTML/d : 我的&trt是treatment, 可能是one two three 或更多arms : 我在画survival plot后,在图的最下面treatment label: one three two. : 我希望是one two three. : 如果我想用option, order=internal,我需要把我的&trt先format ,然后在informat, : 但我不知怎么把一个macro variable format 和 informat. : 多谢!
| a******p 发帖数: 414 | 5 shincha, 谢谢你这么热心的给我解答。
1. 我在写一个survival macro, 类似下面的:
Macro SYNTAX
%SurvTab(data=,
stratum_list=,
time=,
censor=,
estimate=,
graphfile=,
rtffile=,
title= );
&trt是macro parameter, 类似于上面的stratum_list.
2.我没有用gplot来画图,我用的是proc lifetest + plot(s)
所以我想通过在strata statement 后加 order=internal option 来控制我的
treatment label.
不知我说清楚没有,谢谢!
成&
【在 s*****a 的大作中提到】 : 有两个问题: : 1. 如果不是要放在loop里,或者要生成很多同样类型的图,为什么要生成&trt。生成& : trt的目的是什么? : 2. 如果只是单纯的想在最下面legend里头改变treatment label,可以把survival : curve从proc lifetest output到一个dataset,然后用proc gplot 画出来。在gplot里 : 头用legend statement: : legend1 across=1 frame : label=(h=2 position=bottom j=c 'Treatment label:') : value=( h=2 'One' 'Three' 'Two'); : 不好意思,理解不太清楚。如果你能够把你最终想要的描述一下,或者能帮你更多。
| s******8 发帖数: 102 | 6 不清楚究竟是啥问题。“问题是&trt是macro variable, 我不知道如何用format 和
informat.”
是否可以照猫画虎?
%macro test1;
data xxx;
format &trt yourmatnamehere.;
set xxx;
run;
proc lifetest XXX;
strata &trt / order=internal;
....;
run;
%mend test1;
%test1; | a******p 发帖数: 414 | 7 谢谢你的回答。我也是赶鸭子上架,表述不清楚。
下面的code是我从网上找到的。我的&trt 相当于下面code的里的group,
我的问题是,&trt是macro variable, 我不知怎么向下面一样写format
proc format;
invalue $bmtifmt 'ALL' = 1 'AML-Low Risk' = 2 'AML-High Risk' = 3;
value bmtfmt 1 = 'ALL' 2 = 'AML-Low Risk' 3 = 'AML-High Risk';
run;
data Bmt2;
set sashelp.BMT(rename=(Group=G));
Group = input(input(G, $bmtifmt.), 1.);
label Group = 'Disease Group';
format Group bmtfmt.;
run;
proc LIFETEST data=Bmt2 plots=s(atrisk(outside maxlen=13)=0 to 2500 by 500);
time T*Status(0);
strata Group / order=internal;
run;
【在 s******8 的大作中提到】 : 不清楚究竟是啥问题。“问题是&trt是macro variable, 我不知道如何用format 和 : informat.” : 是否可以照猫画虎? : %macro test1; : data xxx; : format &trt yourmatnamehere.; : set xxx; : run; : proc lifetest XXX; : strata &trt / order=internal;
|
|