Создание новой переменной массива в наборе данных SAS - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь создать переменную, которая будет хранить список строк, связанных с другими переменными, в наборе данных 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.

Edit: Я собираюсь написать это в 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 голосов
/ 01 сентября 2018

один из способов сделать это - использовать массив и 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...