Нахождение числа в строке и создание новой переменной true / false - PullRequest
0 голосов
/ 31 января 2020

У меня есть две строковые переменные (DiagnosisPrimary & DiagnosisOther), которые имеют диагноз, закодированный в числовые значения и очерченный '~'. Таким образом, у первого человека был поставлен диагноз «20» при первом посещении, а затем ничего при втором посещении.

DiagnosisPrimary
20~
12~~~
20~20~
12~12~
12~~
~~~~~
12~12

Если 20 означает, что у него диагностирована депрессия, я хочу посмотреть, есть ли «20» среди строки. В основном, узнайте, кому был поставлен диагноз депрессии на любом из их посещений. Раньше я использовал формулу ниже, но теперь данные представляют собой смесь чисел и текста, которые больше не работают.

COMPUTE Dx_Depression =ANY(20, DiagnosisPrimary) OR ANY(20, DiagnosisOther).

Я хочу создать новую переменную с ответом true / false.

Любая помощь высоко ценится!

1 Ответ

1 голос
/ 31 января 2020

Вы должны использовать функцию CHAR.INDEX, которая возвращает позицию строки в другой строке (или 0, если подстрока не существует)

COMPUTE Dx_Depression = (CHAR.INDEX(DiagnosisPrimary, '~20~') >0) or 

(CHAR.INDEX(DiagnosisPrimary, '~20')=char.len(DiagnosisPrimary)-3) or 

(CHAR.INDEX(DiagnosisPrimary, '20~')=1) or 

(CHAR.INDEX(DiagnosisOthers, '~20~') >0) or 

(CHAR.INDEX(DiagnosisOthers, '~20')=char.len(DiagnosisOthers)-3) or 

(CHAR.INDEX(DiagnosisOthers, '20~')=1)
...