我有一组患有疾病发病年龄的患者数据,我想用不同的线来描绘每种疾病发病年龄的频率。 x轴是起始年龄,y轴是频率,每条线代表不同的疾病。年龄为0表示患者没有患病。 SAS的代码是什么?非常感谢!
HoHTAge HoGDAge AddDAge CelDAge
0 0 32 0
0 0 0 0
12 0 23 0
0 20 0 0
25 0 0 0
0 0 0 0
32 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 35
45 0 0 0
0 0 0 0
0 0 0 0
43 0 0 0
0 23 0 0
0 18 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 12 0 0
30 26 0 0
0 40 46 0
0 0 0 30
57 0 0 0
0 0 0 0
答案 0 :(得分:0)
不是100%确定我是否理解您的问题是正确的,但我试图提供解决方案。
这可能是一个复杂的解决方案,我想有很多简短/容易的解决方案。我计算每种疾病的频率,将它们合并到一个数据集中并用gplot绘制它们:
data x;
input HoHTAge HoGDAge AddDAge CelDAge;
datalines;
0 0 32 0
0 0 0 0
12 0 23 0
0 20 0 0
25 0 0 0
0 0 0 0
32 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 35
45 0 0 0
0 0 0 0
0 0 0 0
43 0 0 0
0 23 0 0
0 18 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 12 0 0
30 26 0 0
0 40 46 0
0 0 0 30
57 0 0 0
0 0 0 0
;
run;
proc freq data=x noprint ;
tables HoHTAge / out=a;
run;
proc freq data=x noprint ;
tables HoGDAge / out=b;
run;
proc freq data=x noprint ;
tables AddDAge / out=c;
run;
proc freq data=x noprint ;
tables CelDAge / out=d;
run;
data res (drop =percent count);
merge a (in=a rename=(HoHTAge=age )) b (in=b rename=(HoGDAge=age )) c (in=c rename=(AddDAge=age )) d(in=d rename=(CelDAge=age ));
by age;
*if age=0 then count=0; /*if you want to exclude age 0*/
if a then HoHTAge=count; else HoHTAge=0;
if b then HoGDAge=count; else HoGDAge=0;
if c then AddDAge=count; else AddDAge=0;
if d then CelDAge=count; else CelDAge=0;
ruN;
/* Set the graphics environment */
goptions reset=all cback=white border htext=10pt htitle=12pt;
axis1 label=("age");
axis2 label=( "Count");
symbol1 interpol=join color=R height=14pt font='Arial' ;
symbol2 interpol=join color=B height=14pt font='Arial';
symbol3 interpol=join color=O height=14pt font='Arial' ;
symbol4 interpol=join color=BL height=14pt font='Arial' ;
legend1 repeat=1 label=none frame;
proc gplot data=res;
plot (HoHTAge HoGDAge AddDAge CelDAge)*age/ overlay legend=legend1 haxis=axis1 vaxis=axis2;
run;
根据样本数据,这将导致这个图表,我想用真实数据这看起来会更好,因为现在我们没有年龄超过每种疾病一次:
作为一个简单的替代方案,您可以使用Proc freq dotplot,但之后您已经分离了图形并且只有点,据我所知,您想要输出就像在长解决方案中一样:
ods graphics on;
proc freq data=x ;
tables HoHTAge HoGDAge AddDAge CelDAge / plots=freqplot(type=dot ORIENT = VERTICAL);
run;