2011-08-11 64 views
0

我需要SAS中proc轉置過程的幫助。我的代碼最初是:proc轉置帶有重複的ID值

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

這給了我錯誤「ID值」「在同一個BY組中出現兩次」。我修改了代碼,以這樣的:

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組中發生兩次」。我想保留所有的id值。

請幫我這個。

數據舉例: Patid文本

+0

Nupur,你能舉一個你的數據的例子嗎?我無法複製你的錯誤。 – RWill

+0

當然。我正在試圖在這裏製作一張小桌子,向您展示我的數據如何,但我無法做到這一點。你能告訴我我該怎麼做? – Nupur

+0

只是簡單的東西,如: options obs = 10; proc print data = temp; var patid文本數據編號; – 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

當你得到這個錯誤是告訴你,你有一個或多個變量,你要創建多個數據點。如果向proc轉置行添加「let」,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 –