2016-12-15 5 views
0

Ich habe SAS-Daten wie folgt.SAS: TRANSPOSE ohne Verwendung von PROC TRANSPOSE?

dog cat mice camel pigeon cow goat fish horse donkey monkey lion rat 
DOG CAT MICE CAMEL PIGEON COW GOAT FISH HORSE DONKEY MONKEY LION RAT 

Nicht-Groß-Name ist Spaltennamen. Und Großbuchstaben sind Beobachtungen.

Und ich möchte eine Tabelle wie unten ohne Verwendung PROC TRANSPOSE-Funktion machen. Spaltennamen sind AnimalName und LastAlpha. Das LastAlpha ist das letzte Alphabet für die AnimalName-Beobachtungen.

Ich versuchte ARRAY-Funktion, um diesen Tisch zu machen, aber kein Glück. Ich würde mich freuen, wenn Sie mir helfen könnten.

Antwort

2

Lassen Sie uns Ihr Beispiel zu einem Datensatz machen.

data have; 
    input (dog cat mice camel pigeon cow goat fish horse donkey monkey lion rat) ($); 
cards; 
DOG CAT MICE CAMEL PIGEON COW GOAT FISH HORSE DONKEY MONKEY LION RAT 
; 

Jetzt machen wir Ihre Ausgabe.

data want ; 
    set have ; 
    array list _character_ ; 
    do i=1 to dim(list); 
    AnimalName = list(i); 
    LastAlpha = char(AnimalName,length(AnimalName)); 
    output; 
    end; 
    keep AnimalName LastAlpha; 
run; 
+0

Das funktioniert super !! Vielen Dank @Tom !!! – yusuke0426

1

Das funktioniert für mich. Lassen Sie mich wissen, ob das Ihr Ziel ist:

DATA Want; 
set Have; 
array x{*} _character_; 
keep AnimalName LastAlpha; 
do i =1 to dim(x); 
AnimalName = x[i]; 
LastAlpha = substr(AnimalName,length(AnimalName),1); 
output; 
end; 
run; 
+0

Das ist genau das, was ich wollte !! Danke @ DCR !!! – yusuke0426