2017-02-21 4 views
0

Я ищу, чтобы вывести идентификаторы пациентов из строки темы письма. Я работаю с двумя кадрами данных: у одного есть выход из базы данных SQL (содержит строку темы письма), а у другой - информация о пациенте (имя больницы и идентификатор пациента).Извлечение конкретных идентификаторов пациентов из строки темы письма

Я хочу использовать идентификатор пациента и скрасить строку темы из первого кадра данных и вернуть больницу, связанную с указанным пациентом. К сожалению, я не могу предоставить доступ к данным.

## 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

«К сожалению, я не могу предоставить доступ к данным». Нет, но вы можете предоставить пару строк ** примера ** данных, которые реалистично отражают тип данных, которые вы будете получать, фактически не являясь частью вашего набора данных. Например, если данные были, скажем, отслеживанием оценок студентов колледжей (которые также защищены законом), вы могли бы предоставить записи, описывающие академические записи Джона Q. Taxpayer и Jane Doe. Вы также можете предоставить [mcve], иллюстрирующий то, что вы уже пробовали, и почему это не работает. –

ответ

1

Поскольку вы поделились только один ряд данных, я не уверен в структуре электронной сюжетной линии from_Subject. Если это автоматическая система электронной почты, тогда существует фиксированный шаблон темы темы from_Subject. Я предоставил вам 3 способа извлечь Patient_ID от from_Subject.

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')) 

После того, как вы извлекли Patient_ID, то это просто левое соединение, что вам нужно сделать.

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 
Смежные вопросы