如何将ICD9代码识别为伪变量?

时间:2019-06-12 19:30:57

标签: python dummy-variable

我正在尝试从STATA转换为python,并在python中重新创建一些以前的工作/代码。我有一个包含5个变量,1个患者ID号和4个ICD-9外部伤害代码(称为电子代码)的数据集

我想创建一个变量,以Ecodes 880.XX-889.xx标识人们是堕落者还是非堕落者。

我想要一个变量,该变量指示患者是否在4个ecode变量(值为1)中的任何一个中都具有代码E880.xx-E889.xx,如果他们没有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是否是这种情况。不幸的是,这就是我被困住的地方。在网上搜索后,我似乎找不到与Python等效的代码的任何示例。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您的数据可能采用多种不同的形式,基本问题是相同的,但是具体实现方式将取决于数据的外观。

这是假定数据格式的有效示例:

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仅包含“堕落”患者的ID。