Ich habe eine Datenmenge, die wie folgt aussieht:SAS - Transform-Datensatz aus breit zu hoch Verwendung von Arrays
OBS S1 S2 S3
before 10 15 13
after 5 7 8
Ich versuche Arrays in SAS zu verwenden, um eine Tabelle zu konvertieren, die wie folgt aussieht:
SUBJ BEFORE AFTER
1 10 5
2 15 7
3 13 8
Ich bin noch neu zu SAS. Ich denke, dass ich brauche eine 2x3-Array einrichten, die die Form hat:
10 15 13
5 7 8
dann Schleife obwohl und weisen Sie die Werte.
Das ist, was ich bisher, aber es wird nur die erste Zeile der ursprünglichen Tabelle erfassen:
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;
Was bin ich? Danke für Ihre Hilfe!
SAS verarbeitet nur eine Zeile zu einer Zeit und Arrays sind nur Verknüpfungen zu Variablen. Diese Lösung hängt davon ab, dass Sie die Struktur der Daten kennen. An dieser Stelle können Sie auch den neuen Datensatz eingeben. In diesem Fall ist es wesentlich effizienter, eine PROC TRANSPOSE als eine Array-Methode zu verwenden. – Reeza