/ / SAS: TRANSPOSE senza utilizzare PROC TRANSPOSE? - sas, trasporre

SAS: TRANSPOSE senza utilizzare PROC TRANSPOSE? - sas, trasporre

Ho dati SAS come questo.

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

Il nome non-capitale è il nome della colonna. E le lettere maiuscole sono osservazioni.

E voglio creare una tabella come di seguito SENZA usare la funzione PROC TRANSPOSE. I nomi delle colonne sono AnimalName e LastAlpha. Il LastAlpha è l'ultimo alfabeto per le osservazioni di AnimalName.

AnimalName LastAlpha
DOG        G
CAT        T
MICE       E
CAMEL      L
PIGEON     N
COW        W
GOAT       T
FISH       H
HORSE      E
DONKEY     Y
MONEKY     Y
LION       N
RAT        T

Stavo tentando di utilizzare la funzione ARRAY per creare questo tavolo, ma senza fortuna. Apprezzerei se potessi aiutare.

risposte:

2 per risposta № 1

Facciamo il tuo esempio in un set di dati.

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
;

Ora facciamo il tuo output.

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;

1 per risposta № 2

Questo funziona per me. Fammi sapere se è quello che stai cercando:

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;