【发布时间】:2017-02-07 00:16:58
【问题描述】:
我有一张医生就诊表,如果有多个诊断,有时会有多个记录用于同一个遭遇键,例如:
Enc_Key | Patient_Key | Enc_Date | Diag_Key
123 789 20160512 765
123 789 20160512 263
123 789 20160515 493
546 013 20160226 765
564 444 20160707 004
789 226 20160707 546
789 226 20160707 765
我正在尝试根据 Diag_Key 列的值创建一个指标变量,但我需要在整个遭遇中应用它。换句话说,如果我得到诊断代码的值“756”,那么我想将指示变量的“1”应用于与具有相同 Enc_Key 的记录的每个记录,该记录的 Diag_Code 值为 756,如下:
Enc_Key | Patient_Key | Enc_Date | Diag_Key | Diag_Ind
123 789 20160512 765 1
123 789 20160512 263 1
123 789 20160515 493 1
546 013 20160226 723 0
564 444 20160707 004 0
789 226 20160707 546 1
789 226 20160707 765 1
我似乎无法找到将这个二进制指标应用于多个不同记录的方法。我一直在使用类似于这样的一行代码:
tbl$Diag_Ind <- ifelse(grepl('765',tbl$Diag_Key),1,0)
但这只会将值“1”分配给具有该 Diag_Key 值的单个记录,我不确定如何将其应用于具有相同 Enc_Key 值的其余记录
【问题讨论】:
-
as.integer(duplicated(tbl$Enc_Key) | duplicated(tbl$Enc_Key, fromLast = TRUE))? -
您的示例和描述中的某些数据正在发生变化,但
ave允许您为每个组生成一个值:ave(df$Diag_Key, df$Enc_Key, FUN = function(x){any(x == 765)})或者只是使用 dplyr 或 data.table 进行分组。