Некоторая информация отсутствует, однако при условии, что вы можете прочитать данные во фрейм данных, с вашим ответом может помочь следующее:
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.