2013-09-25 3 views
0

Мне жаль, что я не был лучше на R, но мне нужна помощь с чем-то довольно простым.Ячейка со средней вместимости

У меня возникли проблемы с записью функции, которая будет выполнять условное вычисление ячейки. Данные, с которыми я работаю в настоящее время, имеют 3 столбца и способ, которым я в настоящее время записываю функцию, среднее значение для наблюдаемых значений в третьем столбце вменяется во все НС во всех трех столбцах. Как я могу это исправить? Спасибо!

cellmean.imp <- function(a){ 

    for (i in 1:dim(a)[2]){ 

    new=replace(a, is.na(a), mean(a[, i], na.rm=TRUE)) 

    } 
    return(new) 
} 

К сожалению, я забыл добавить: Я пытаюсь приписывать среднее значение наблюдаемых значений для 1-го столбца в САМ в первом столбце, то среднее значение наблюдаемых значений для Hte 2-й колонке в НС во втором столбце и т. Д.

+0

Является ли 'a' матрицей или data.frame? Кроме того, вы заставляете это звучать, как 3-й столбец играет особую роль, в то время как в коде отсутствует: можете ли вы прояснить? – flodel

+0

@flodel - я ** думаю ** они хотят, чтобы среднее значение для каждого столбца вменяется в '' '' '' '' '' 'в каждом соответствующем столбце. Что-то вроде: 'apply (x, 2, function (x) {x [is.na (x)] <- mean (x, na.rm = TRUE); x})' – thelatemail

ответ

0

? Не уверен, что именно то, что вы просите, но если все, что вам нужно сделать, это вставить NA значения с колонки означают,

x[,3][is.na(x[,3]] <- mean(x[,3], na.rm=TRUE) 

должны сделать это. Это было то, что вы хотели?

+0

Проверьте свои скобки ... – Thomas

0

Если я вас правильно понял, вы хотите поставить среднее третьего столбца в каждом NA в матрице

x <- matrix(rnorm(30),10,3) 

Введем несколько Nas

x[3,1] <- NA 
x[4,1] <- NA 
x[5,2] <- NA 
x[6,3] <- NA 

Замените их на третьей колонке означает,

x[is.na(x)] <- mean(x[,3],na.rm=TRUE) 
Смежные вопросы