我正在尝试创建一个变量,该变量将在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"
}
答案 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;