SAS:TRANSPOSE不使用PROC TRANSPOSE?

时间:2016-12-15 19:29:10

标签: sas 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功能的情况下制作如下表格。列名是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函数制作此表,但没有运气。如果你能提供帮助,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

让我们将您的示例变成数据集。

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;

答案 1 :(得分:1)

这对我有用。如果您正在寻找它,请告诉我:

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;