Я использовал пакет mice
для расчета импутаций (10 итераций, 5 импутаций). Поскольку я новичок в этой области, мой «методолог» очень терпелив со мной! - хотите судить о вмененных значениях (а не о завершенных наборах). Кажется, я не могу найти способ собрать все вмененные значения в одном чистом фрейме данных.
Данные касаются молодых людей, которые ответили на множество вопросов по 5-балльной шкале Лайкерта. У меня несколько imp
на возрастную категорию. Например:
С помощью моей команды imp_val
я могу видеть все вмененные значения для каждого вопроса и для каждого идентификатора. Так, например,
plus <- Filter(Negate(is.null), imp_15plus$imp)'data.frame': 1 obs. of 5 variables:
$ 1: Factor w/ 4 levels "2","3","4","5": 3
..- attr(*, "contrasts")= num [1:4, 1:3] 0 1 0 0 0 0 1 0 0 0 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr "2" "3" "4" "5"
.. .. ..$ : chr "2" "3" "4"
$ 2: Factor w/ 4 levels "2","3","4","5": 3
..- attr(*, "contrasts")= num [1:4, 1:3] 0 1 0 0 0 0 1 0 0 0 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr "2" "3" "4" "5"
.. .. ..$ : chr "2" "3" "4"
etc., etc.
imp_val_15plus[1:2]
дает:
$X02_07
1 2 3 4 5
qwertyuiop123456789 4 4 4 4 4
$X02_12
1 2 3 4 5
adfghjkl09823430233 2 2 5 2 2
zcvnmoi987412597800 1 2 1 1 2
Итак, вот два вопроса (X02_07 и X02_12). У первого есть один NA (id qwe...789), а у второго два NA (id adf...0233 и zcvn...7800).
Я хотел бы иметь такой кадр данных:
q_nr id 1 2 3 4 5
$X02_07 qwertyuiop123456789 4 4 4 4 4
$X02_12 adfghjkl09823430233 2 2 5 2 2
$X02_12 zcvnmoi987412597800 1 2 1 1 2
Поэтому я придумал способ извлечь нужные мне значения, а затем попытаться использовать цикл для всех этих значений. Я попытался извлечь значения:names(imp_val_15plus[1])
дает мне номер вопроса [1] "X02_07"
row.names(imp_val_15plus[[1]])
дает мне идентификационный номер [1] "qwertyuiop123456789"
Но тогда я ошибаюсь с вмененными значениями. С as.integer(imp_val_15plus[[1]])
я получаю [1] 3 3 3 3 3
вместо того, что хотел [1] 4 4 4 4 4
. Тройка логична из-за факторов, доступных для вопроса $X02_07. Обычно уровни факторов должны быть от 1 до 5, но ни один из подростков не использовал 1, поэтому мои уровни для этого вопроса 2-5.
Взгляните на str(imp_val_15plus[[1]])
, это дает:
'data.frame': 1 obs. of 5 variables:
$ 1: Factor w/ 4 levels "2","3","4","5": 3
..- attr(*, "contrasts")= num [1:4, 1:3] 0 1 0 0 0 0 1 0 0 0 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr "2" "3" "4" "5"
.. .. ..$ : chr "2" "3" "4"
$ 2: Factor w/ 4 levels "2","3","4","5": 3
..- attr(*, "contrasts")= num [1:4, 1:3] 0 1 0 0 0 0 1 0 0 0 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr "2" "3" "4" "5"
.. .. ..$ : chr "2" "3" "4"
etc., etc.
Логично, что я получил тройку, потому что это номер фактора с уровнями "2", "3", "4", "5". Как получить значение самого значения (4) вместо 3? Или есть другой способ аккуратно представить все вмененные значения (не полный набор!!)?
impL$M_x <- rep(is.na(impL[which(impL$Imputed == "Observed"),'x']),imp$m +1)
. Используя этот манекен, вы можете конкретно посмотреть на вмененные значения для каждого набора данныхimpL[which(impL$Imputed == "Imputed" & impL$M_x == TRUE),c('.imp','x')]
- person Niek   schedule 13.06.2018as.integer(imp_val_15plus[[1]])
, возможно, может быть решена путем преобразования фактора в символas.integer(as.character(imp_val_15plus[[1]]))
. - person Niek   schedule 13.06.2018as.integer(as.character(imp_val_15plus[[1]]))
не может работать, потому что она видит только значение и игнорирует факторные уровни. то есть вы получаете тот же ответ. Но спасибо за помощь! - person Marlein   schedule 13.06.2018imp_val_15plus
? Это может помочь ответить на ваш вопрос - person Niek   schedule 13.06.2018