Si va a importar sus datos con un comando como, por ejemplo,
read.table('yourfile.txt', header=TRUE, ...)
usted puede indicar cuáles son los valores a ser considerados como "nulo" o NA
valores, especificando na.strings = "999999999"
. También podemos considerar diferentes valores para indicar NA
valores. Considere el siguiente archivo (fake.txt
) donde queremos tratar "." y "999999999" como NA valores:
1 2 .
3 999999999 4
5 6 7
a continuación, en R haríamos:
> a <- read.table("fake.txt", na.strings=c(".","999999999"))
> a
V1 V2 V3
1 1 2 NA
2 3 NA 4
3 5 6 7
De lo contrario, siempre se puede filtrar los datos según lo indicado por @Sacha en su comentario. Aquí, podría ser algo como
a[a=="." | a==999999999] <- NA
Editar
En caso de que haya varios valores anormales que se puede observar en las diferentes columnas con valores diferentes, pero usted sabe que el probable rango de valores admisibles, se puede aplicar una función a cada columna. Por ejemplo, definir el siguiente filtro:
my.filter <- function(x, threshold=100) ifelse(x > threshold, NA, x)
entonces
a.filt <- apply(a, 2, my.filter)
se sustituye cada valor > 100 con NA en la matriz a
.
Ejemplo:
> a <- replicate(10, rnorm(10))
> a[1,3] <- 99999999
> a[5,6] <- 99999999
> a[8,10] <- 99999990
> summary(a[,3])
Min. 1st Qu. Median Mean 3rd Qu. Max.
-1e+00 0e+00 0e+00 1e+07 1e+00 1e+08
> af <- apply(a, 2, my.filter)
> summary(af[,3])
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
-1.4640 -0.2680 0.4671 -0.0418 0.4981 0.7444 1.0000
Puede ser basado en vectores de curso:
> summary(my.filter(a[,3], 500))
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
-1.4640 -0.2680 0.4671 -0.0418 0.4981 0.7444 1.0000