R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

Puuttuvien arvojen poistaminen matriisista

Usein on tarve poistaa puuttuvat (NA) arvot esim. matriisista. Oheisella funktiolla se onnistuu näin:

mat <- matrix(1:20, 4, 5)
is.na(mat) <- mat[1:2,2]
mat
 
#Funktio poistaa koko rivin, jossa on yksikin NA
#Inputiksi sarake, jonka perusteella poiston haluaa
rm.na <- function(mat, which.column=2){
	wc <- which.column
	mat[!is.na(mat[,wc]),]}
 
rm.na(mat, 1)
rm.na(mat, 2)
 
#complete.cases toimii samantyyppisesti
mat[complete.cases(mat),]

Ajettuna

> mat <- matrix(1:20, 4, 5)
> is.na(mat) <- mat[1:2,2]
> mat
     [,1] [,2] [,3] [,4] [,5]
[1,]    1   NA    9   13   17
[2,]    2   NA   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20
> 
> #Funktio poistaa koko rivin, jossa on yksikin NA
> #Inputiksi sarake, jonka perusteella poiston haluaa
> rm.na <- function(mat, which.column=2){
+ 	wc <- which.column
+ 	mat[!is.na(mat[,wc]),]}
> 
> rm.na(mat, 1)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1   NA    9   13   17
[2,]    2   NA   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20
> rm.na(mat, 2)
     [,1] [,2] [,3] [,4] [,5]
[1,]    3    7   11   15   19
[2,]    4    8   12   16   20
> 
> #complete.cases toimii samantyyppisesti
> mat[complete.cases(mat),]
     [,1] [,2] [,3] [,4] [,5]
[1,]    3    7   11   15   19
[2,]    4    8   12   16   20
>


Category