Создать PatientID в R - PullRequest
       2

Создать PatientID в R

0 голосов
/ 13 марта 2019

Мне нужно сгенерировать 13 цифр PatientID, используя первые 3 буквы имени, последние две буквы фамилии, количество букв в фамилии (до 9), пол (F или M) и дату рождения в формате MMDDYY. Вот мой набор данных практики введите описание изображения здесь

Я использую следующий код, но он не работает

> PracticeData$PatientID<- paste0(str_sub(PracticeData$FIRST,1,3),
+ str_sub(PracticeData$LAST,-2),
+ str_length(PracticeData$LAST),
+ PracticeData$BIRTHDAY,
+ PracticeData$GENDER))

PatientID не содержит нужную мне строку введите описание изображения здесь

Опять же, код не включает день рождения в форме MMDDYY, длина фамилии не ограничена 9, а пол должен выглядеть как F или M. Может кто-нибудь помочь мне с этим.

1 Ответ

3 голосов
/ 13 марта 2019

Некоторая информация отсутствует, однако при условии, что вы можете прочитать данные во фрейм данных, с вашим ответом может помочь следующее:

FIRST = c("Barabara", "Filip", "Lupe", "Mariola")
LAST = c("Lee", "Rice", "De","Valhenstadt")
BIRTHDAY = c("1986-01-01", "1989-04-08", "1976-02-10","1969-11-19")
BIRTHDAY = as.Date(BIRTHDAY)
GENDER = c("Female","Male","Female","FEMALE")

PracticeData = data.frame(FIRST, LAST, BIRTHDAY, GENDER)

PracticeData$PatientID = paste0(str_sub(PracticeData$FIRST,1,3),
    str_sub(PracticeData$LAST,-2),
    ifelse(str_length(PracticeData$LAST) <=9, str_length(PracticeData$LAST), 9),
    PracticeData$BIRTHDAY,
    str_sub(PracticeData$GENDER,1,1))

PracticeData$PatientID = gsub("-", "", PracticeData$PatientID)

> PracticeData$PatientID
[1] "Baree319860101F" "Filce419890408M" "LupDe219760210F" "Mardt919691119F"

ifelse () Условие в коде сделает фамилии длиннее 9 букв, которые будут записаны как 9 букв.Фамилия "Valhenstadt" в приведенном выше примере имеет длину 11 символов, но она записана в идентификаторе участника "Mardt919691119F" как 9.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...