Alex Rivera | Logout

Replace NA values by row means

Asked 2011-08-02T20:21:27.763
10

I want to replace my NA values from a matrix acquired by :

read.table(…)

Those values should be the mean of the corresponding row.

I.e, the following row of the table :

1 2 1 NA 2 1 1 2

would become

1 2 1 1.43 2 1 2

Thank you.

r
Edit
Report

1 Answer

30

Here's some sample data.

m <- matrix(1:16, nrow=4)
m[c(1,4,6,11,16)] <- NA

And here's how I'd fill in missings with the row means.

k <- which(is.na(m), arr.ind=TRUE)
m[k] <- rowMeans(m, na.rm=TRUE)[k[,1]]

Your data will be in a data.frame; you'll have to convert to a matrix first using as.matrix. You may or may not want to leave it in that format; to convert back use as.data.frame.

answered 2011-08-02T20:39:23.210

Your Answer