我正在尝试完成以下操作。
变量字母有三个值(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新手。任何线索都将受到赞赏。
莉莎
答案 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;