如何在数据框中获取所有imp值(R鼠标)

时间:2018-06-12 19:40:34

标签: r r-mice

我使用mice包来计算插补(10次迭代,5次插补)。因为我是这个领域的新手,我的“方法学家” - 对我非常耐心! - 想要判断估算的值(所以不是完成的集合)。我似乎无法找到一种方法来收集一个清晰数据帧中的所有推算值。

这些数据是关于以5分李克特量表回答大量问题的年轻人。每个年龄段我有几个imp。例如:

使用我的命令imp_val_15_plus <- Filter(Negate(is.null), imp_15plus$imp),我可以看到每个问题和每个ID的所有估算值。例如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的值?或者是否有另一种方式以整齐的方式呈现所有推算值(而不是完整的集合!!)?

0 个答案:

没有答案