Tengo 5 columnas de datos numéricos (m1, m2, m3, m4, m5) y quiero generar una nueva columna con el valor medio de todas las m en la misma fila. Es decir:Expresión R para administrar NA al sumar columnas
(m1 + m2 + m3 + m4 + m5)/5
Tengo un problema con la gestión de los valores de NA: Quiero que el valor medio sea NA si, y sólo si, todos los valores individuales de la década de m son NA. Pero, si uso na.rm, entonces las NA se sustituyen por ceros y no hay NA en la columna de los medios. Por otro lado, si no uso na.rm, la columna de medias es NA si CUALQUIERA de las m es NA.
he hecho lo siguiente:
m <- rowSums(data.frame(m1,m2,m3,m4,m5)/5, na.rm=TRUE)
for (i in 1:length(m)) {
if (all(is.na(c(m1[i],m2[i],m3[i],m4[i],m5[i])))) {
m[i] <- NA
}
}
Funciona, pero estoy casi seguro de que R puede hacerlo de una manera mejor. ¿Cómo se puede hacer sin bucles?
Tal vez la pregunta suena un poco trivial. Perdón por eso, pero soy nuevo en R.
Gracias de antemano.
La diferencia se debe al hecho que el '> suma (DAT [10,]/5, na.rm = VERDADERO)' devuelve 0, pero 'mean (dat [10,], na.rm = TRUE)' es 'NaN'. Ver '? RowSums' y la sección' Value' que explica lo que está sucediendo. –
Cuál (el anterior) parece contradecir la ayuda - 'mean (rep (NA, 5), na.rm = TRUE)' parece devolver 'NaN' no' NA'. Podría ser un error de documentación. –