2016-06-14 5 views
0

私は病気の発症年齢の患者データセットを持っており、各疾患の発症年齢の頻度を別の行でプロットしたいと思います。 x軸は発症年齢であり、y軸は頻度であり、各線は異なる疾患を表す。年齢の0は、患者がその病気を有していないことを示す。これを行うにはSASのコードは何でしょうか?本当にありがとう!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

すでにいくつかのコードを試しましたか?それは何ですか? – vielmetti

+0

あなたが行った頻度は、変数内または変数間で計算されますか?したがって、32が列1に1回、列3に1回出現する場合、列1の頻度は1 /(列1のobsの数)または1 /(列1および3のobsの数)になりますか? – superfluous

+0

freqplotを使用すると、すべての年齢の1つの(ドット)プロットでこれを行うことができますが、私はすべての年齢 - 頻度を1つのプロットの線として欲しいと理解していますか?前に0を含めたり除外したりしますか? 1つのアプローチは、適切なステップでプロット用のデータを作成し、gplotを使用することです。 – kl78

答えて

0

あなたの問題が正しいと理解していれば100%ではありませんが、私は解決策を提供しようとしました。

これは多分複雑な解決策です。私は短くて簡単な解決策が多いと思います。私は1つのデータセットにそれらをマージし、各疾患のfreqsをカウントし、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のドットプロットを使用することができますが、その後、あなたは私の知る限り、あなたがのように出力を望んで理解されるように、グラフやドットのみを区切っているとして、単純な代替

enter image description here

:各疾患のためのより多くの、その後一度は年齢を持っていません長い解決策:

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

ありがとうございました!これは完璧です! – ybao

関連する問題