SAS如何有效地创建具有相应值的变量

时间:2015-12-04 23:10:44

标签: arrays sas

我正在尝试完成以下操作。

变量字母有三个值(a,b,c)。我想创建一个变量Letter_2,其值对应于Letter的值,即(1,2,3)。

我知道我可以使用三个IF Then语句来做到这一点。

if Letter='a' then Letter_2='1';
if Letter='b' then Letter_2='2';
if Letter='c' then Letter_2='3';

假设我有变量Letter的15个值,以及15个相应的替换值。有没有办法有效地做到这一点而不输入相同的If Then语句15次?

我是SAS新手。任何线索都将受到赞赏。

莉莎

1 个答案:

答案 0 :(得分:0)

看起来像是FORMAT的应用程序。

首先定义格式。

proc format ;
  value $lookup 'a'='1' 'b'='2' 'c'='3' ;
run;

然后用它来重新编码你的变量。

data want;
  set have;
  letter2 = put(letter,$lookup.);
run;

或许您可以使用两个临时数组和WHICHC()函数?

data have;
  input letter $10. ;
cards;
car
apple
box
;;;;

data want ;
  set have ;
  array from (3) $10 _temporary_ ('apple','box','car');
  array to (3) $10 _temporary_ ('first','second','third');
  if whichc(letter,of from(*)) then 
    letter_2 = to(whichc(letter,of from(*)))
  ;
run;