У меня есть большой набор данных пациентов с их медицинскими записями.
Почти у всех есть MainSpecialtyCode, но соответствующее MainSpecialtyDescription более редкое.
У меня есть специальный словарь для этого, но я хочу сохранить уже существующие описания, независимо от того, соответствуют ли они словарю. Я не перезаписываю существующие описания.
Возможно ли объединение влево только для тех, у кого отсутствуют метки?
Илимне нужно разделить данные и объединить обратно, как я сделал ниже.
Интересно, есть ли альтернатива для этого?
library(dplyr)
# Mock data
set.seed(1)
MyData <- data.frame(
patientID = c(LETTERS[seq(from=1, to=10)]),
MainSpecialtyCode = c(1,2,3,4,6,11,8,1,2,3),
MainSpecialtyDescription = c(NA, NA, NA, NA, "Geriatric", "Nursing",
"Cardiology","Nephrology", NA, NA)
)
SpecialtyDictionary <- data.frame(
MainSpecialtyCode = c(1,2,3,4,5,6,7,8,9,10),
MainSpecialtyDescription = c("Cardiology", "Nephrology", "Respiratory",
"Cancer", "General", "Paediatric", "Urinary", "Diabetes", "Podiatry",
"Nursing")
)
# Subset data with missing descriptions
MissingData <- MyData[is.na(MyData$MainSpecialtyDescription), ]
# Merge descriptions onto this
MergedData <- MissingData %>%
select(-MainSpecialtyDescription) %>%
left_join(SpecialtyDictionary, by="MainSpecialtyCode")
# Append onto data without missing descriptions
MyData2 <- rbind(MyData[!is.na(MyData$MainSpecialtyDescription), ], MergedData)