Как определить коды ICD9 как фиктивные переменные? - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь перейти с STATA на python и воссоздаю некоторые из моих предыдущих работ / кода на python.У меня есть набор данных с 5 переменными, 1 идентификатором пациента и 4 кодами внешних травм ICD-9 (так называемыми электронными кодами)

Я хочу создать переменную, которая идентифицирует людей как людей, которые являются противниками, а не людьми,идентифицируется с Ecodes 880.XX-889.xx.

Я хочу переменную, которая указывает, был ли у пациента код E880.xx-E889.xx в ЛЮБОЙ из 4 переменных экод (значение 1), если у них нет E880.xx-E889Код .xx дает им значение 0, но не дает им значение (закодированное как отсутствующее), если отсутствуют 4 значения электронного кода, поскольку они не имели внешних повреждений.

В STATA код довольно прост:
gen fall_inj_ecode = 0

foreach var in ecode1 ecode2 ecode3 ecode4{  
replace fall_inj_ecode=1 if strpos(`var', "E880")>0
replace fall_inj_ecode=1 if strpos(`var', "E881")>0
replace fall_inj_ecode=1 if strpos(`var', "E882")>0
replace fall_inj_ecode=1 if strpos(`var', "E883")>0
replace fall_inj_ecode=1 if strpos(`var', "E884")>0
replace fall_inj_ecode=1 if strpos(`var', "E885")>0
replace fall_inj_ecode=1 if strpos(`var', "E886")>0
replace fall_inj_ecode=1 if strpos(`var', "E887")>0
replace fall_inj_ecode=1 if strpos(`var', "E888")>0

обратите внимание, что есть субкоды (отсюда и часть ".xx"), которые кодируются безпериод.Таким образом, код E8801 считается между 880.xx и 889.xx и обозначает травму в результате падения.

К счастью для STATA, если значения ecode отсутствуют или пусты, он автоматически заполняет метки новой переменной как отсутствующие,Я не уверен, что это так для питона.К сожалению, это то, где я застреваю.после поисков в Интернете я не могу найти примеры эквивалентного кода для python.Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 13 июня 2019

Ваши данные могут быть в разных формах, основная проблема та же, но реализация зависит от того, как выглядят ваши данные.

Вот рабочий пример для предполагаемого формата данных:

faller_codes = ['E880', 'E881', 'E882', 'E883', 'E884', 'E885', 'E886', 'E887', 'E888']
patients = [
    (1, ['example E2345', 'example E8801', 'E884 example', 'E799, E880, E8881']),
    (2, ['example E2345', 'example E8891', 'E9880 example', ''])
]

faller_patients = [
    n for n, codes in patients
    if any([
        any([
            faller_code in code
            for faller_code in faller_codes
        ]) for code in codes
    ])
]

print(faller_patients)

После запуска, faller_patients содержит только идентификаторы "более" пациентов.

...