2011-08-11 5 views
0

私はSASでproc転置手続きの助けが必要です。私のコードは最初だった:これは私に「ID値」「」グループBY同じで二回発生し、エラーを与えたproc ID値を重複して転記する

proc transpose data=temp out=temp1; 
by patid; 
var text; 
Id datanumber; 
run; 

。私はこれにコードを変更しました:

proc sort data = temp; 
by patid text datanumber; 
run; 

data temp; 
set temp by patid text datanumber; 
if first.datanunmber then n = 0; 
n+1; 
run; 

proc sort data = temp; 
by patid text datanumber n; 
run; 

proc transpose out=temp1 (drop=n) let; 
by patid; 
var text; 
id datanumber; 
run; 

これは私にエラーを与えています:変数nは認識されません。 letオプションを追加すると、「同じBYグループで2回発生する」というエラーが多く発生します。私はすべてのid値を保持したい。

私を助けてください。

データ例: Patidテキスト

+0

Nupur、データの例を挙げることはできますか?あなたのエラーを再現することができませんでした。 – RWill

+0

私はここに小さなテーブルを作って、私のデータがどのように見えるかを見せてもらえますが、それはできません。どうすればいいの? – Nupur

+0

単純なもの: オプションobs = 10; proc print data = temp; var patid text datanumber; – RWill

答えて

0

あなたのデータは、おそらく固有のものではありませんか?私は(patidとdatanumberの一意の値を持つ)データセットを作成し、転置は動作します:

data temp (drop=x y); 
do x=1 to 4; 
    PATID='PATID'||left(x); 
    do y=1 to 3; 
     DATANUMBER='DATA'||left(y); 
     TEXT='TEXT'||left(x*y); 
     output; 
    end; 
end; 
proc sort; by _all_; 
proc transpose out=temp2 (drop=_name_); 
    by patid; 
    var text; 
    id datanumber; 
run; 

私の推薦は「n」の修正を忘れてpatidとdatanumber、汚れのためのユニークなデータを作ることに集中するだろうアプローチは、次のようになります。

proc sort data = temp nodupkey; 
by patid datanumber; 
run; 

あなたのコードの先頭で..

2

あなたがそのエラーを取得すると、あなたが作成しようとしている1つまたは複数の変数のための複数のデータポイントを持っていることを語っています。 SASは、「転記」を転記行に追加すると、転記を強制して余分なデータポイントを削除することができます。

+0

「LET」オプションの説明については、以下を参照してください。http://support.sas.com/documentation/cdl/en/proc/65145/HTML/default/viewer.htm#p1r2tjnp8ewe3sn1acnpnrs3xbad.htm :http://support.sas.com/documentation/cdl/en/proc/65145/HTML/default/viewer.htm#n0mwa670j36v2an1ojkae8e3d8sz.htm –

関連する問題