需要通过数组循环来澄清这个新变量的创建,

时间:2014-06-08 11:10:13

标签: arrays sas

下面,我有一段SAS代码。变量 AEACN 是一个字符变量,其值与声明的临时字符数组变量 text1 相同。我创建了另一个字符数组变量 num ,其值从1到5.我正在检查变量 AEACN 值是否具有临时字符数组变量中存在的值 text1 ,如果它们相等,那么我相应地分配值1到5。变量 AEACN 不为空。但仍然没有填充变量 C9

array text1[5] $ _temporary_ ( "DOSE NOT CHANGED"
                                 "DRUG INTERRUPTED"
                                 "DRUG WITHDRAWN" 
                                 "NOT APPLICABLE"
                                 "UNKNOWN" ) ;
array num[5] ( "1" "2" "3" "4" "5" ) ;

do i = 1 to 5 ;
    if strip ( upcase ( aeacn ) ) = text1[i] then c9 = num[i] ;
end;

我有时候很安静。我觉得这个问题在我的鼻子底下。我需要第三人对这段代码的看法。

1 个答案:

答案 0 :(得分:1)

数组引用变量,因此在定义数组时,您需要为变量中的值(而不是大小写初始值)分配变量名称。

要重新编码变量,您需要使用以下格式:

proc format;
value $DRUG
   "DOSE NOT CHANGED"="1"
   "DRUG INTERRUPTED"="2"
   "DRUG WITHDRAWN"  ="3"
   "NOT APPLICABLE"  ="4"
   "UNKNOWN"         ="5"
;
run;

data MyDataSet;                
    set MyDataSet;              
    c9=put(strip(upcase(aeacn)),$DRUG.);
run;