在SAS数据集中创建新的数组变量

时间:2018-08-31 20:33:35

标签: arrays sas

我正在尝试创建一个变量,该变量将在SAS数据集中存储与其他变量相关的字符串列表。这是数据集的示例:

Patient  Therapy1  Therapy2 Therapy3 Therapy4
1001       X           X       X        X
1002       X                   X            
1003                   X                X

基本上,我想在列表的末尾添加一个名为“摘要”的变量,该变量将包含针对每个患者的一串疗法。因此,患者1001应该说“ Therapy1,Therapy2,Therapy3,Therapy4”,患者1002应该说“ Therapy1,Therapy3”,而患者1003应该说“ Therapy2,Therapy4”。

此数据的代码存储在名为tmp的表中。

编辑: 我将在R中写出来,然后看是否有人可以在SAS中做类似的事情。

for(i in 1:nrows(data)){
  if(data$Therapy1[i] == "X"){
    data$Summary[i] = data$Summary[i] + ", " + "Therapy1"
    }
    ....
   if(data$Therapy4[i] == "X"){
    data$Summary[i] = data$Summary[i] + " " + "Therapy4"
    }

1 个答案:

答案 0 :(得分:1)

一种方法是使用数组和vname,如下所示

data want;
set have;
length summary $100.;
array new(*) therapy:;
do i = 1 to dim(new);
if new(i) ne ' '
then summary=catx(',',summary,vname(new(i)));
end;
drop i;
run;