我使用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的值?或者是否有另一种方式以整齐的方式呈现所有推算值(而不是完整的集合!!)?