Я пытаюсь перейти с STATA на python и воссоздаю некоторые из моих предыдущих работ / кода на python. У меня есть набор данных с 5 переменными, 1 идентификационным номером пациента и 4 кодами внешних повреждений ICD-9 (так называемые электронные коды). (но более 1000 строк, так что ручной ввод действительно возможен).
Я хочу создать переменную, которая идентифицирует людей как поддельных, а не как посредников, идентифицируемых с помощью E-кодов 880.XX-889.xx. Python рассматривает их как объекты.
Я хочу переменную, которая указывает, имел ли пациент код E880.xx-E888.xx в ЛЮБОЙ из 4 переменных экода (значение 1), если они не имеюткод E880.xx-E888.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. Любая помощь будет принята с благодарностью
Вот изображение первых 10 или около того строк данных, и то, что я пытаюсь заставить его выглядеть (синим цветом):
Ссылка на мой Github репозиторий, где находится файл .csv для вашего удобства.
Мне кажется, я понял некоторые из моих вопросов. Если я смогу создать 4 новые переменные ecode, которые помечают коды E880.xx - E888.xx как падение (значение 1) и дают всем остальным значение 0. Тогда я могу создать пятую переменную, которая добавляет значения4 новых переменных. если эта новая переменная имеет значение 1 или более, то я знаю, что как часть кода произошла травма в результате падения.
pd1011['fall_injury'] = pd1011['ecodep_pdfall'] + pd1011['ecode1_pdfall'] + pd1011['ecode2_pdfall'] + pd1011['ecode3_pdfall'] + pd1011['ecode4_pdfall']
fall_dictionary = { 0 : 'Non-Fall',
1 : 'Fall Injury'}
pd1011['fall_injury'] = pd1011.apply(lambda x: fall_dictionary.get(x['fall_injury']), axis=1)
Однако я не уверен, как бы назначить целочисленное значениек объекту.
Кроме того, если у кого-то есть какие-либо ресурсы, которые могут помочь (будь то книги, веб-сайты, учебники и т. д.), пожалуйста, дайте мне знать!