2017-03-03 171 views
0

我有一個SAS數據集,其中每行代表與醫生聯繫的一些人員ID。每個ID有不同數量的聯繫人(即行)。我的數據集如下所示。SAS:將數據集從行轉換爲列

enter image description here

我想要做的是一個數據集,看起來落得像

enter image description here

這是每一個獨特的ID我想有一個數據集,在這裏我創建列對於每個聯繫號碼(NUMBER)以及該聯繫類型是什麼(CONTACT_TYPE),並且列應根據聯繫人的數量命名。我還希望代碼根據最大聯繫人數(MAX)自動創建列,即NUMBER & MAX應該是我的最後一列。

我已經嘗試了數以某種方式轉化爲宏觀變量的「名稱」和然後試圖以某種方式

%讓名= NUM​​BER

,然後用這個在datastep像做

NUMBER & name。 = CONTACT_TYPE

在數據步驟中。然而,這並不適合我,而且我很可能非常低效。

有人能指出我正確的方向來解決這個問題嗎?

預先感謝您的時間。

問候亞歷山大

+0

下一次將數據作爲文本發佈在問題中。優選以數據步驟的形式。 – Tom

回答

1

這與PROC TRANSPOSE完成。

首先,讓我們創建一個包含新列名稱的列。

data temp; 
set have; 
_name_ = catt("NUMBER",number); 
run; 

對數據進行排序,如果它尚未排序。如果數據被排序,則跳過。

proc sort data=temp; 
by id number; 
run; 

然後運行轉

proc transpose data=temp out=want; 
by id; 
var CONTACT_TYPE; 
id _NAME_; 
run; 
+0

非常感謝。這正是我正在尋找的。 – AGK1991

2

這種類型的問題是什麼PROC TRANSPOSE是專門用來處理。

proc transpose data=have out=want prefix=NUMBER ; 
    by id; 
    id number ; 
    var contact_type; 
run;