我有一個數據集,看起來像這樣:SAS - 從廣角轉換數據集高大使用數組
OBS S1 S2 S3
before 10 15 13
after 5 7 8
我試圖使用數組在SAS將其轉換爲看起來像這樣的表:
SUBJ BEFORE AFTER
1 10 5
2 15 7
3 13 8
我還是SAS的新手。我想,我需要建立一個具有形式的2x3陣列:
10 15 13
5 7 8
然後循環,但並分配值。
這是我迄今爲止,但它僅捕獲原始表的第一行:
DATA tall;
input obs $ score1-score3;
array rowscores(3) score1-score3;
array allscores(2,3) _TEMPORARY_;
do i=1 to 2;
do j=1 to 3;
allscores(i,j) = rowscores(j);
end;
end;
do k=1 to 3;
subj = k;
before = allscores(1,k);
after = allscores(2,k);
output;
end;
keep subj before after;
DATALINES;
before 10 15 13
after 5 7 8
;
RUN;
我缺少什麼?謝謝你的幫助!
SAS一次只處理一行,而數組只是變量的快捷方式。這個解決方案取決於你知道數據的結構,在這一點你也可以輸出新的數據集。在這種情況下,使用PROC TRANSPOSE而不是數組方法會更有效。 – Reeza