2016-03-29 9 views
0

2つのデータセットがあります。彼らの主題は同じグループですが、異なる研究者によって異なる "標本"が描かれます。したがって、2つのデータセットの頻度を比較するSAS

  • 私は

  • 変数が、彼らは同じことを意味しても、

  • 変数は、データセットの異なる場所にあり、異なる名前が付けられ、マッチ(両方のサンプルで、すなわちピーター・スミス)を識別することはできません

ここでは、2つのデータセットを比較して、全体としてどれほど似ているかを確認したいと思います。私は同じ意味を持っていることが分かっている変数の周波数出力を比較することを考えました。

これまでのところ、変数の組み合わせごとにすべてのステップを実行する必要があったので、私のソリューションは私の目では面倒です。

  1. さらに洗練された/効率的なソリューションがありますか?

  2. 数値変数の平均、中央値、百分位数を比較したいと思います。

ありがとうございます!

ゲリット

これは私の現在の解決策の例です。私は元のファイルでは、どの観測値がID変数から伝えられないのかとは違って、観測値にはすべて異なる名前を付けました。

data have1;             
    input Name $ road means goal ;       
    datalines;             
adam 1 3 0             
bob 1 1 1              
clint 2 2 0              
dean 3 1 1              
eric 2 1 0 
flint 1 2 1             
gerald 3 1 1             
;                
run;               
data have2;             
    input Name $ street finish other purpose ;    
    datalines;            
harry 2 1 0 3            
idefix 1 0 0 2            
john 3 1 1 2            
kelvin 1 0 2 2            
liam 2 1 2 1            
max 3 1 2 1            
nero 2 0 1 3            
ovid 3 0 2 3            
;                
run;               

proc freq data=have1;           
    tables road/out= fhave1road       
      (rename=(percent=pct1 count=count1));    
quit;               
proc freq data=have2;           
    tables street/out= fhave2street      
      (rename=(street = road percent=pct2 count=count2)); 
quit;               

data comb;             
    merge fhave1road fhave2street;       
    by road;             
diffpct = pct1 - pct2;          
diffct = count1 - count2;          
run;               

proc print data = comb;          
    var road count1 count2 diffct pct1 pct2 diffpct;   
quit;               

proc means data=have1; 
    var road; 
    output out=mhave1road ; 
quit; 
proc sort data=mhave1road; 
    by _STAT_; 
quit; 
proc means data=have2; 
    var street; 
    output out=mhave2street ; 
quit; 
proc sort data=mhave2street; 
    by _STAT_; 
quit; 
data mcomb (keep=_STAT_ road street diff) ; 
    merge mhave1road mhave2street;  
    by _STAT_; 
diff = road-street; 
run; 
proc print data = mcomb; 
quit;    
+0

は無関係なデータセットをマージしないでください!あなたにとって幸運なことに、観測数は同じで統計は意味がありますが、作成するデータセットは駄目です。 –

答えて

0

あなたはボックスプロットと

title 'have1'; 
proc means data=have1 min p25 mean median p75 max; 
run; 
title 'have2'; 
proc means data=have2 min p25 mean median p75 max; 
run; 

またはグラフィカル同等からかなりの情報を取得します:

title 'have1'; 
proc transpose data=have1 out=trans1; 
    by Name; 
    var road means goal; 
run; 
title 'have2'; 
proc transpose data=have2 out=trans2; 
    by Name; 
    var street finish other purpose; 
run; 
title 'both'; 
data both; 
    set trans1 (in=in1) trans2 (in=in2); 
    if in1 then source = 1; 
    if in2 then source = 2; 
run; 
proc sgpanel data=both; 
    panelby source; 
    vbox col1/category= _name_; 
run; 
+0

ありがとうございます。グラフは涼しく見えます。 2つの等価な変数(例:通りと道路)の結果を互いに隣り合わせにすることは可能ですか?それは比較を容易にするでしょう。また、2つの同等の変数の平均等を「自動的に」比較したいと思います。私はデータセットをマージしたいとは思っていません。私は文筆の統計を比較して、Excelにコピー&ペーストするのはとても美味ではない。 – Gerit

+0

もちろん可能ですが、Gerit。基本的に 'category = source'と' panelby = meaning'が必要です。ここで 'meaning'は' _name_'の値に基づいて記入する変数です。私は今日それをテストする時間がありません。 –

+0

グラフでは、私はこの段階で別の意味を並べて "他の"によって中断されないようにステップを逃しているだけです。'両方のデータ。 両方を設定します。 _name_ in( 'ゴール' 'フィニッシュ')なら意味= 'ゴール'; \t else if _name_ in( 'street' '道')then meaning = 'road'; \t else if _name_ in( 'は'目的 'を意味します)then meaning ='手段 '; \t else meaning = _name_; 実行; proc sgpanel data = both; パネル意味_name_; vbox col1/category = source; run; 'と数字のdeskripitve統計はどのように比較できますか? – Gerit

関連する問題