SAS:不使用 PROC TRANSPOSE 进行 TRANSPOSE?

SAS: TRANSPOSE without using PROC TRANSPOSE?

我有这样的 SAS 数据。

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

非大写名称为列名。大写字母是观察结果。

我想在不使用 PROC TRANSPOSE 函数的情况下制作如下所示的 table。列名是 AnimalName 和 LastAlpha。 LastAlpha 是 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

我试图使用 ARRAY 函数来制作这个 table,但没有成功。如果您能提供帮助,我将不胜感激。

这对我有用。让我知道这是否是您要找的:

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;

让我们把你的例子变成数据集。

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
;

现在让我们输出。

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;