2017-02-07 12 views
2

여러 번의 진단이있는 경우 같은 만남 키 (Enc_Key)에 대해 여러 레코드가있는 경우가 있습니다.다른 키가 여러 레코드 인 이진 변수가 R의 다른 필드에있는 문자를 기반으로합니다

Enc_Key | Patient_Key | Enc_Date | Diag 
    123   789   20160512  asthma 
    123   789   20160512  fever 
    123   789   20160515  coughing 
    546   013   20160226  flu  
    564   444   20160707  laceration 
    789   226   20160707  asthma 
    789   226   20160707  fever 

나는 Diag 변수 문자의 값에 따라 Diag_Ind 변수 인디케이터를 생성하려고하지만 전체 만남을 위해 그것을 적용해야합니다. 나는 레코드 Diag은 "천식"의 값을 얻을 경우 즉, 그때 적용 할 "1"에 대한 그런 다음 같은 Enc_Key이있는 모든 기록에 Diag_Ind :

Enc_Key | Patient_Key | Enc_Date | Diag   | Diag_Ind 
    123   789   20160512  asthma    1 
    123   789   20160512  fever    1 
    123   789   20160515  coughing   1 
    546   013   20160226  flu    0  
    564   444   20160707  laceration   0 
    789   226   20160707  asthma attack  1 
    789   226   20160707  fever    1 

이 바이너리 표시기를 여러 레코드에 적용하는 방법을 알아낼 수 없습니다. 나는이 유사 코드의 라인을 사용하고 있습니다 :

tbl$Diag_Ind <- ifelse(grepl('asthma',tolower(tbl$Diag)),1,0) 

을하지만 이것은 단지 이와 같은 그 의 하단부 값으로 하나의 레코드에 "1"의 값을 할당합니다 :

Enc_Key | Patient_Key | Enc_Date | Diag   | Diag_Ind 
    123   789   20160512  asthma    1 
    123   789   20160512  fever    0 
    123   789   20160515  coughing   0 
    546   013   20160226  flu    0  
    564   444   20160707  laceration   0 
    789   226   20160707  asthma attack  1 
    789   226   20160707  fever    0 

나는 같은 Enc_Key 값으로 기록의 나머지 부분에 적용하는 방법을 확실 해요

답변

1
Enc_Key의 각 그룹에있는 값이 01이있는 경우 우리는 확인하기 위해 기본 R ave을 사용할 수 있습니다

dplyr

library(dplyr) 
df %>% 
group_by(Enc_Key) %>% 
mutate(Diag_Ind = as.numeric(any(grep("asthma", Diag)))) 

# Enc_Key Patient_Key Enc_Date Diag Diag_Ind 
# (int)  (int) (int)  (fctr) (dbl) 
#1  123   789 20160512  asthma  1 
#2  123   789 20160512  fever  1 
#3  123   789 20160515 coughing  1 
#4  546   13 20160226  flu  0 
#5  564   444 20160707 laceration  0 
#6  789   226 20160707  asthma  1 
#7  789   226 20160707  fever  1 
와는

df$Diag_Ind<- ave(df$Diag, df$Enc_Key,FUN=function(x) as.integer(any(grep("asthma", x)))) 

df 
# Enc_Key Patient_Key Enc_Date  Diag Diag_Ind 
#1  123   789 20160512  asthma  1 
#2  123   789 20160512  fever  1 
#3  123   789 20160515 coughing  1 
#4  546   13 20160226  flu  0 
#5  564   444 20160707 laceration  0 
#6  789   226 20160707  asthma  1 
#7  789   226 20160707  fever  1 

유사 솔루션