У меня есть большой набор данных пациентов с их медицинскими картами.
Почти у всех есть 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)
Nursing
равен 10, а дляMyData
— 11. Это опечатка? - person utubun   schedule 06.02.2019