0

SASでのproc転置手順についてサポートが必要です。私のコードは当初、次のとおりでした。

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

これにより、「ID値「」が同じBYグループで2回発生します」というエラーが発生しました。コードを次のように変更しました。

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値を保持したい。

これで私を助けてください。

データ例:パティッドテキスト

4

4 に答える 4

2

このエラーが発生した場合、作成しようとしている 1 つ以上の変数に対して複数のデータ ポイントがあることを示しています。proc transpose 行に「let」を追加すると、SAS は転置を強制し、余分なデータポイントを削除できます。

于 2011-11-07T15:06:53.223 に答える
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;

コードの最初に..

于 2011-09-26T15:35:38.693 に答える