【问题标题】:Line graph of frequency vs age of onset for multiple diseases in SASSAS中多种疾病的频率与发病年龄的折线图
【发布时间】:2016-06-15 18:55:00
【问题描述】:

我有一组带有疾病发病年龄的患者数据,我想用不同的线绘制每种疾病发病年龄的频率。 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

【问题讨论】:

  • 你有没有尝试过一些代码,它做了什么?
  • 您要计算的频率是在变量内还是跨变量计算?因此,如果 32 在第 1 列和第 3 列中出现一次,那么它在第 1 列的频率是 1 /(第 1 列中的 obs 数)还是 1/(第 1 列和第 3 列中的 obs 数)?
  • 使用 freqplot 您可以在每个年龄的单个(点)图中执行此操作,但据我了解,您希望所有年龄频率在一个图中作为一条线?包括0还是之前排除它们?一种方法是分步构建绘图数据,然后使用 gplot。

标签: graph sas frequency


【解决方案1】:

不是 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 点图,但是您有单独的图表并且只有点,据我了解,您希望像长解决方案一样输出:

ods graphics on;
proc freq data=x  ;
tables HoHTAge HoGDAge AddDAge CelDAge / plots=freqplot(type=dot ORIENT = VERTICAL);
run;

【讨论】:

  • 谢谢!这是完美的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多