Interpolar los valores NA cuando la columna termina en NA.
Tengo una columna con datos numéricos con NA y también con NA al final:
df <- data.frame(
Diam_av = c(12.3, 13, 15.5, NA, NA, NA, NA, 13.7, NA, NA, NA, 9.98, 4.0, 8.76, NA, NA, NA)
)
Quiero interpolar los valores faltantes. Esto funciona bien con la función na.approx
de zoo
siempre y cuando haya valores límite positivos para interpolar, pero falla si, como en mi caso, uno de los valores límite es NA (al final de la columna Diam_av
):
library(zoo)
df %>%
mutate(Diam_intpl = na.approx(Diam_av))
Error: Problem with `mutate()` input `Diam_intpl`.
x Input `Diam_intpl` can't be recycled to size 18.
ℹ Input `Diam_intpl` is `na.approx(Diam_av)`.
ℹ Input `Diam_intpl` must be size 18 or 1, not 15.
¿Alguna idea de cómo excluir/neutralizar los valores NA al final de la columna?
davy.ai
Una solución para excluir/neutralizar los valores NA finales de las columnas es utilizar el parámetro
na.rm
enna.approx
, el cual elimina todos los NAs finales del vector antes de la interpolación. Esto se puede lograr utilizando la funciónna.trim
del paquetezoo
antes de aplicarna.approx
:La función
na.trim
elimina todos los NAs finales por defecto, y el parámetrona.rm
enna.approx
se establece enFALSE
para evitar cualquier eliminación adicional de NAs. Esto debería permitir una interpolación exitosa de los datos faltantes.