Arrays SAS数组循环:检查数组[x]是否为空,然后填写它

Arrays SAS数组循环:检查数组[x]是否为空,然后填写它,arrays,sas,Arrays,Sas,所以,处理SAS Dx阵列:我有一个阵列,疾病类别。我目前正在做的是为每个数组[x]分配一个单独的类别,然后将所有内容汇总到一个最终数组中 我想做的是检查数组[x]是否为空-如果为空,那么我想用疾病类别标签填充它。否则,我想转到下一个数组(数组{x+1]),并重复该过程,直到数组已满和/或循环完成。我已经为此工作了一段时间。我怀疑有必要使用DO循环和计数机制 array disease_category[*] _character_ disease1-disease10; If DGNSC

所以,处理SAS Dx阵列:我有一个阵列,疾病类别。我目前正在做的是为每个数组[x]分配一个单独的类别,然后将所有内容汇总到一个最终数组中

我想做的是检查数组[x]是否为空-如果为空,那么我想用疾病类别标签填充它。否则,我想转到下一个数组(数组{x+1]),并重复该过程,直到数组已满和/或循环完成。我已经为此工作了一段时间。我怀疑有必要使用DO循环和计数机制

 array disease_category[*] _character_ disease1-disease10;

 If DGNSCD1 in: ('033','390','391','037','045')
 then disease_category[1] = "Immunization";

 if (DGNSCD1 =: "3200" AND %AGE(1,5))
 then disease_category[2] = "Hemophilius";

您需要以下内容,再加上第二个疾病类别名称数组,或者将类别编号转换为标签的格式。我喜欢后者

proc format;
value discat
1="Immunization"
2="Hemophilius"
other="NONE"
;
quit;
然后在数据步骤中:

do _n = 1 to dim(disease_category);
 if missing(disease_category[_n]) then disease_category[_n]=put(_n,discat.);
end;