SAS實驗室之PROC TRANSPOSE


首先,拋開SAS,回憶我們在數學課本上學習的轉置是什么概念,轉置如下圖:

以上就是數學中的轉置。

那么在SAS里該如何轉置呢?

先看語法格式:

PROC TRANSPOSE <DATA=input-data-set> <DELIMITER=delimiter> <LABEL=label> 
<LET> <NAME=name> <OUT=output-data-set> <PREFIX=prefix> <SUFFIX=suffix>; 
BY <DESCENDING> variable-1 
<<DESCENDING> variable-2 ...>
<NOTSORTED>; 

COPY variable(s); 

ID variable; 

IDLABEL variable; 

VAR variable(s); 

其中,VAR variable(s); 確定要轉置的數據,后面跟數據對應的變量名;

ID variable;確定轉置后新變量的變量名,若沒有該語句,則新變量名以COLN的形式命名;
BY <DESCENDING> variable-1  <<DESCENDING> variable-2 ...> <NOTSORTED>; 確定以什么變量分組,最終各個組分別轉置,后面跟要分組的變量名;
COPY variable(s); 對於沒有轉置但是要保留的變量給復制下來;
IDLABEL VARIABLE;/
<LABEL=label> 給被轉置的變量加上標簽;
<PREFIX=prefix>新形成的變量的變量名的前綴;
<SUFFIX=suffix>新形成的變量的變量名的后綴;
LET 允許轉置中存在重復值。

先看代碼如下:

DATA A1;
    INPUT ID X1 $ X2 $ X3 $;
    CARDS;
    1 a1 a2 a3
    2 a4 a5 a6
    3 a7 a8 a9
    ;
RUN;
PROC TRANSPOSE DATA=A1 OUT=B1;
    VAR X1 X2 X3;
RUN;
PROC PRINT;
RUN;

代碼中先造了一個如上圖的矩陣,在進行了轉置,輸出結果為下圖:

由結果可知,矩陣的主體就已經轉置好了,其實SAS的PROC TRANSPOSE過程的核心是在於確定VAR語句,VAR跟着的變量名確定好了,整個轉置的功能也完成的80%。

VAR跟着的變量就是原數據集中想轉置的觀測數據對應的變量名。

PROC TRANSPOSE DATA=A1 OUT=B1;
    ID X1;
    VAR X1 X2 X3;
RUN;

加上ID語句之后的運行結果為:

直接以X1列的觀測作為新變量的觀測了。而在實際應用中我們會以對應的項目名稱變量,為新變量命名(如下面代碼);

DATA A3;
    INPUT ID XYZ $ X1 $ X2 $ X3 $;
    CARDS;
    1 X a1 a2 a3
    1 Y a4 a5 a6
    1 Z a7 a8 a9
    2 X B1 B2 B3
    2 Y B4 B5 B6
    2 Z B7 B8 B9
    3 X C1 C2 C3
    3 Y C4 C5 C6
    3 Z C7 C8 C9
    ;
RUN;
PROC TRANSPOSE DATA=A3 OUT=B3(DROP=_NAME_);
    VAR X1 X2 X3;
    BY ID;
    ID XYZ;
RUN;
PROC PRINT;
RUN;

運行結果為:

以上代碼演示了BY語句的效果,以ID的數據分類分組,然后在轉置。

下面我們還可以看看其他幾個options的效果;

如代碼:

PROC TRANSPOSE DATA=A4 OUT=B1(DROP=_NAME_)LET LABEL=STUDENT 
NAME=TEACHER PREFIX=prefix SUFFIX=suffix;
    VAR X1 X2 X3;
    BY ID;
    ID XYZ;
RUN;

得到的結果如下:

 

有了附加的OPTIONS 的小功能,使數據集看上去更加具有可讀性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM