Заменить NA значения строк - PullRequest
10 голосов
/ 03 августа 2011

Я хочу заменить свои значения NA из матрицы, полученной с помощью:

read.table(…)

Эти значения должны быть средними значениями для соответствующей строки.

Т.е., следующая строка таблицы:

1 2 1 NA 2 1 1 2

станет

1 2 1 1.43 2 1 2

Спасибо.

Ответы [ 3 ]

24 голосов
/ 03 августа 2011

Вот некоторые примеры данных.

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

А вот как я бы заполнил пропуски с помощью средства строки.

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

Ваши данные будут в data.frame;сначала вам нужно преобразовать в матрицу, используя as.matrix.Вы можете или не можете оставить его в этом формате;для конвертации используйте as.data.frame.

5 голосов
/ 03 августа 2011
x[is.na(x)] <- mean(x, na.rm=TRUE)  # for vectors or for a matrix as a whole

t( apply(x, 1, function(xv) { xv[is.na(xv)] <- 
                                    mean(xv, na.rm=TRUE)
                              return(xv)}
          ) ) # for a row-oriented sol'n
1 голос
/ 03 августа 2011
a = c(NA, 1, 2, 3, 10)
a[which(is.na(a)==TRUE)] = mean(a,na.rm = T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...