Что-то вроде функции «paste_over» ниже уже существует в базе R или в одном из стандартных пакетов R?Функция для вставки скорректированных значений внутри существующего фрейма данных
paste_over <- function(original, corrected, key){
corrected <- corrected[order(corrected[[key]]),]
output <- original
output[
original[[key]] %in% corrected[[key]],
names(corrected)
] <- corrected
return(output)
}
Пример:
D1 <- data.frame(
k = 1:5,
A = runif(5),
B = runif(5),
C = runif(5),
D = runif(5),
E = runif(5)
)
D2 <- data.frame(
k=c(4,1,3),
D=runif(3),
E=runif(3),
A=runif(3)
)
D2 <- D2[order(D2$k),]
D3 <- D1
D3[
D1$k %in% D2$k,
names(D2)
] <- D2
D4 <- paste_over(D1, D2, "k")
all(D4==D3)
В примере D2 содержит некоторые значения, которые я хочу, чтобы вставить через соответствующие ячейки в пределах D1. Однако D2 не в том же порядке и не имеет того же размера, что и D1.
Мотивация заключается в том, что мне был предоставлен очень большой набор данных, в нем были обнаружены некоторые ошибки и получен ряд подмножеств исходного набора данных с некоторыми исправленными значениями. Я хотел бы иметь возможность «вставлять» новые скорректированные значения в старый набор данных без изменения старого набора данных с точки зрения структуры. (Как остальная часть написанного мной кода предполагает структуру старого набора данных.)
Хотя функция paste_over работает, я не могу не думать, что это, должно быть, было рассмотрено раньше, и поэтому, возможно, уже есть колодец известную функцию, которая работает быстрее и имеет проверку ошибок. Если есть, пожалуйста, дайте мне знать, что это. Спасибо.