下面,我有一段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;
我有时候很安静。我觉得这个问题在我的鼻子底下。我需要第三人对这段代码的看法。
答案 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;