2016-11-13 63 views
0

我有原始數據集移調數據集

1

我要的是:

2

我的代碼:

proc transpose data = lib.original 
     out= lib.new(rename=(col1=Mean col2=Median)); 
     var WBCmean RBCmean WBCmedian RBCmedian; 
     run; 

,但我得到

3

你能提供一些提示嗎?

編輯

如果我添加by聲明,

proc transpose data = lib.original 
     out= lib.new; 
     by Gender; 
     var WBCmean RBCmean WBCmedian RBCmedian; 
     run; 

然後我得到 4

+0

您遺漏了BY語句,將男性和女性記錄作爲單獨的組處理。嘗試一下,看看你能否接近。同時考慮使用兩個TRANSPOSE步驟。 – Tom

+0

@Tom,我添加了'by'語句。 – Bigeyes

+0

您是否只有這4列?或者您是否需要動態的解決方案?一般而言,轉置是很好的,因爲它是動態的,但如果你需要一個定製的結果,通過一個數組進行'手動'轉置也是很好的。 – Reeza

回答

0

一種方法是轉換成一個高大骨感格式。

proc transpose data = have out=middle ; 
    by gender ; 
    var WBCmean RBCmean WBCmedian RBCmedian; 
run; 

然後再生成新的變量需要,

data middle; 
    set middle ; 
    testcode = substr(_name_,1,3); 
    _name_ = substr(_name_,4); 
run; 

你可能需要根據你的原來的VAR聲明變量名的順序對數據進行排序,

proc sort data=middle; 
    by gender testcode _name_; 
run; 

,然後轉入新的安排。

proc transpose data=middle out=want ; 
    by gender testcode ; 
    id _name_; 
    var col1 ; 
run; 
+0

這仍然是不正確的。我把原始數據集放在[這裏](https://onedrive.live.com/?id=3A8BB9EAEEFF1DB%214159&cid=03A8BB9EAEEFF1DB)。希望有人可以看看它。 – Bigeyes

+0

我測試了這個,它按預期工作。解釋什麼是不正確的。 – Reeza