2017-02-21 2 views
0

Ich bin auf der Suche nach Patienten IDs aus einer E-Mail-Betreffzeile zu extrahieren. Ich arbeite mit zwei Datenrahmen: Einer hat aus einer SQL-Datenbank (enthält E-Mail-Betreffzeile) und der andere hat Patienteninformationen (Krankenhausname und Patienten-ID).Extrahieren bestimmter Patienten-IDs aus E-Mail Betreff Zeile

Ich möchte die Patienten-ID verwenden und die Betreffzeile aus dem ersten Datenrahmen scrubben und das diesem Patienten zugeordnete Krankenhaus zurückgeben. Leider kann ich keinen Zugang zu den Daten geben.

## Example Data 

Data frame 1 example row: 

Column 1 (from_Email): [email protected] 

Column 2 (Time_IN): 1/11/2000 12:00:00 

Column 3 (from_Subject): Patient H2445JFLD presented into ER with .... symptoms 

Data frame 2 example row: 

Column 1 (Hospital Name): Hospital ABC 

Column 2 (Patient ID): H2445JFLD 
+0

"Leider kann ich keinen Zugriff auf die Daten bereitstellen." Nein, aber Sie können einige Zeilen mit ** Beispieldaten ** angeben, die realistisch die Art der Daten widerspiegeln, die Sie empfangen, ohne tatsächlich Teil Ihres Datensatzes zu sein. Wenn die Daten beispielsweise die Noten von College-Studenten (die auch gesetzlich geschützt sind) verfolgen, könnten Sie Datensätze bereitstellen, die die akademischen Aufzeichnungen von John Q. Taxpayer und Jane Doe beschreiben. Sie können auch eine [mcve] angeben, die veranschaulicht, was Sie bereits versucht haben und warum das nicht funktioniert. –

Antwort

1

Da Sie nur eine Reihe von Daten geteilt haben, bin ich von dem Muster der E-Mail-Betreffzeile from_Subject nicht sicher. Wenn es sich um ein automatisiertes E-Mail-System handelt, gibt es ein festgelegtes Muster der E-Mail-Betreffzeile from_Subject. Ich habe Ihnen 3 Möglichkeiten gegeben, die Patient_ID von from_Subject zu extrahieren.

library(dplyr) 

df1 <- data_frame(from_Email = "[email protected]", 
        Time_IN = "1/11/2000 12:00:00", 
        from_Subject = "Patient H2445JFLD presented into ER with .... symptoms") 

df2 <- data_frame(Hospital_Name = "Hospital ABC", 
        Patient_ID = "H2445JFLD") 

# Extract 2nd word from the subject line 
df1 <- df1 %>% mutate(Patient_ID = stringr::word(from_Subject, 2)) 
# Extract the word after "Patient" from the subject line 
df1 <- df1 %>% mutate(Patient_ID = str_extract(df1$from_Subject, '(?<=Patient\\s)\\w+')) 
# Extract a word of length 9 that has characters A-Z and 0-9 from the subject line 
df1 <- df1 %>% mutate(Patient_ID = str_extract(df1$from_Subject, '\\b[A-Z0-9]{9}\\b')) 

Sobald Sie die Patient_ID extrahiert haben, dann ist es eine einfache LEFT JOIN, dass Sie tun müssen, würde zu.

left_join(df1, df2, on="Patient_ID") 
#Joining, by = "Patient_ID" 
# A tibble: 1 × 5 
# from_Email   Time_IN   from_Subject           Patient_ID Hospital_Name 
# <chr>     <chr>   <chr>             <chr>  <chr> 
#1 [email protected] 1/11/2000 12:00:00 Patient H2445JFLD presented into ER with .... symptoms H2445JFLD Hospital ABC 
Verwandte Themen