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

2022-09-28 21:01:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从STATA转换到python,并用python重新创建我以前的一些工作/代码。我有一个数据集,有5个变量,1个病人ID号和4个ICD-9外伤代码(称为e代码)

我想创建一个变量,用Ecodes 880.XX-889.XX标识人们是失败者还是非失败者

我想要一个变量,它指示患者是否在4个ecode变量(值为1)中的任何一个中有一个代码E880.xx-E889.xx,如果他们没有E880.xx-E889.xx代码,给他们一个值0,但是如果4个e代码值丢失,不要给他们一个值(编码为缺失),因为他们没有外伤

在STATA中,代码非常直接:
gen fall\ U inj\ U 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等效的代码示例。任何帮助都将不胜感激


Tags: 代码ifvarreplacexxstata失败者fallinjecodestrpose889外伤e880
1条回答
网友
1楼 ·

您的数据可能有多种不同的形式,基本问题是相同的,但实现方式会因数据的外观而异

下面是一个假定数据格式的工作示例:

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只包含“faller”患者的id

热门问题