У меня есть оператор шага данных SAS -
Data work.CABGothers2;
set work.CABGothers1;
IF proc_p in (a HUGE LIST OF ICD10 CODES) and PDDCABG = 1
and TypeofCABG_PDDTemp = . then TypeofCABG_PDDTemp = 4;
IF proc2 in (a HUGE LIST OF ICD10 CODES) and PDDCABG = 1
and TypeofCABG_PDDTemp = . then TypeofCABG_PDDTemp = 4;
IF proc3 in (a HUGE LIST OF ICD10 CODES) and PDDCABG = 1
and TypeofCABG_PDDTemp = . then TypeofCABG_PDDTemp = 4;
...
run;
Этот раздел IF-THEN продолжается 21 раз, поэтому вы можете представить, насколько ОГРОМНЫ и громоздки этот файл кода sas, особенно когда дело доходит до любогоизменения в списке кодов ICD10.Это должно было бы быть изменено индивидуально во всех столбцах proc1, proc2 ...
Кроме того, списки ICD10 очень огромны с более чем 7000 кодами, мне было интересно, если бы кто-то мог показать мне лучший код SAS, которыйможет принимать в качестве входных данных столбец данных (коды ICD10) из файла.
Я хотел бы, чтобы процедура sql или Data пошаговая процедура.Что бы ни было более эффективным.
Текущий код-
Data work.CABGothers2;
set work.CABGothers1;
IF proc_p in (a HUGE LIST OF ICD10 CODES) and PDDCABG = 1
and TypeofCABG_PDDTemp = . then TypeofCABG_PDDTemp = 4;
run;
ОБНОВЛЕНИЕ -
Я получаю это, если список небольшой ..У меня есть колонка с 8000 уникальных кодов ICD10.Поэтому я получаю сообщение об ошибке, как показано ниже.
proc sql;
select quote(icd10) into :cabgvalexcl separated by ','
from newlink.cabgvalexcl2019;
quit;
Data work.test1;
set WORK.cabgpddcol;
IF proc_p in (&cabgvalexcl.) and PDDCABG = 1 then CABGVAL_Excl = 1;
IF oproc1 in (&cabgvalexcl.) and PDDCABG = 1 then CABGVAL_Excl = 1 ;
IF oproc2 in (&cabgvalexcl.) and PDDCABG = 1 then CABGVAL_Excl = 1;
IF oproc3 in (&cabgvalexcl.) and PDDCABG = 1 then CABGVAL_Excl = 1 ;
IF oproc4 in (&cabgvalexcl.) and PDDCABG = 1 then CABGVAL_Excl = 1;
run;
**> Сообщение об ошибке - ОШИБКА: длина значения макропеременной
CABGVALEXCL (65540) превышаетмаксимальная длина (65534).Значение было усечено до 65534 символов. **
UPDATE - eXAMPLE (JUST FEW ROWS) ТОЛЬКО 1 столбца (у меня нет нескольких столбцов. Я сделал это в примере с макросом, потому что макросВ переменной не хватило места.), содержащей коды ICD10 и файл данных, в котором мне нужно пометить строки, содержащие любой из кодов ICD10 -
![ICD10 Code list - single COLUMN](https://i.stack.imgur.com/9WNHV.png)
![Input data table](https://i.stack.imgur.com/VAoVC.png)
Таблица ВЫХОДА- LOgic - Если какой-либо из кодов ICD10, перечисленных в cabgvalexcl2019 (показанный здесь в RED), найден в таблице CABGOTHERS1,создайте столбец с именем - EXCLUDE - и установите значение 1 для этой записи.
![Desired output table](https://i.stack.imgur.com/bJpZL.png)