Как вернуть обратно вмененные значения в R

Есть ли какая-нибудь функция в R, которая может помочь вернуть вмененные значения, например:

x <- c(23,23,25,43,34,22,78,NA,98,23,30,NA,21,78,22,76,NA,77,33,98,22,NA,52,87,NA,23,
23)

с использованием метода единого линейного вменения,

na.approx(x)

Я получаю вмененные данные как;

[1] 23 23 25 43 34 22 78 35 98 23 30 24 21 78 22 76 22 77 33 98 22 14 52 87 59
[26] 23 23

Как я могу получить вмененное значение из программы, не просматривая заполненный набор данных один за другим? Например, если данные, которые я вычислил, содержат $n=200$ наблюдений, могу ли я получить 20 оценок отсутствующего значения?


person ano    schedule 01.05.2013    source источник


Ответы (2)


Я не уверен на 100%, правильно ли я вас понял, но поможет ли это?

Сначала вы сохраняете места, в которых находятся исходные значения NA, например, первое значение NA находится на 8-м месте. Сохраните это в фиктивную переменную

dummy<-NA
for (i in 1:length(x)){
if(is.na(x[i]))  dummy[i]<-i
}

Теперь получите соответствующие значения в вмененных данных

    imputeddata<-na.approx(x)


  for (i in 1:length(imputeddata)){
  if(!is.na(imputeddata[dummy[i]])) print(imputeddata[dummy[i]])
    }
person Stat Tistician    schedule 01.05.2013
comment
Используя тот же общий принцип, вы можете добиться того же результата с помощью imputeddata[is.na(x)]. - person Gala; 01.05.2013

Вы можете использовать is.na для выбора только тех значений, которые ранее были NA.

> x <- c(23,23,25,43,34,22,78,NA,98,23,30,NA,21,78,22,76,NA,77,33,98,22,NA,52,87,NA,23,23)
> na.approx(x)[is.na(x)]
[1] 88.0 25.5 76.5 37.0 55.0

Надеюсь, это поможет.

person Lukas Vermeer    schedule 15.05.2013