У меня есть два следующих кадра данных:
n <- 15000
key <- sample(1:10, 10)
dictionary <- data.frame(key = key, value = LETTERS[1:10])
target_df <- data.frame(code = sample(key, n, replace = TRUE))
target_df$code[sample(seq_len(n), 10)] <- 0
Я хочу перезаписать code
соответствующими value
s из dictionary
. Что такое эффективный и читабельный способ сделать это? Я использовал
find_in_dictionary <- function(x) {
y <- dictionary[match(x, dictionary[, 1]), 2]
}
target_df$code <- find_in_dictionary(target_df$code)
sum(is.na(target_df$code))
Кажется, что он работает нормально, и он правильно обрабатывает случаи отсутствия совпадений. У вас есть лучшие предложения?