2017-03-07 4 views
0

私は、異なる時点で多数のラボテストが行​​われたデータセットを持っています。データセットを長いものから長いものに転置しようとしていますが、問題はテストのタイプによって異なる時点でラボテストが発生することです。私がそれを転置すると、結果がどの時点から来たかを知る能力がなくなります。データが失われたときにSASが転移する

*Create test data; 
data long; 
do subject=1 to 10; 
    do test=1 to 3; 
     do visit=1 to 3; 
      result=rand("Uniform"); 
     output; 
end; end; end; 
run; 

*Now remove records at certain visits depending upon the test type; 
data long; set long; 
    if test=2 and visit=2 then delete; 
    if test=3 and visit=1 then delete; 
run; 

*Sort and transpose; 
*Test 2 should only be at visit 1 and 3, and test 3 at visits 2 and 3; 
*This transpose does not accomplish that goal; 
proc sort data=long; by subject test visit;run; 
proc transpose data=long out=wide; 
    by subject test ; 
    var result; 
run; 

答えて

1

例のデータでは、PROC TRANSPOSEコードにIDステートメントを追加するだけで済みます。このようにして、VISITの値を使用して結果の列に名前を付けます。 PREFIX =オプションをPROC TRANSPOSEステートメントに追加することもできます。

proc transpose data=long out=wide prefix=visit; 
    by subject test ; 
    id visit ; 
    var result; 
run; 
関連する問題