R-鼠标-添加一列,该列与插补值相加

R-鼠标-添加一列,该列与插补值相加,r,dataframe,statistics,r-mice,R,Dataframe,Statistics,R Mice,我有一个丢失数据的数据库。我需要输入数据(我使用鼠标),然后基于原始列创建新列(使用输入的数据)。我需要对这些新专栏进行统计分析 具体来说,我的参与者使用7分的利克特量表填写了几份问卷。有些人没有回答所有的问题。那么,我需要估算价值 1-对列中的值求和,并可访问此新值进行统计分析 2-根据此总和,将参与者分为“轻度、中度、重度”,并将其用于统计分析 我是根据这个答案来做的: 这是我的代码(使用R): 这是经过user20650指出的更正后没有bug的代码 # Create a samp

我有一个丢失数据的数据库。我需要输入数据(我使用鼠标),然后基于原始列创建新列(使用输入的数据)。我需要对这些新专栏进行统计分析

具体来说,我的参与者使用7分的利克特量表填写了几份问卷。有些人没有回答所有的问题。那么,我需要估算价值 1-对列中的值求和,并可访问此新值进行统计分析 2-根据此总和,将参与者分为“轻度、中度、重度”,并将其用于统计分析

我是根据这个答案来做的:

这是我的代码(使用R):


这是经过user20650指出的更正后没有bug的代码

    # Create a sample bdd
bdd=data.frame(
    gender=c("M","F","M", "M", "M", "F"),
    choice=c(1,2,NA,1,1,1),
    gardes=c(0,0,0,5,7,NA),
    EE1=c(3,4,1,NA,3,0),
    EE2=c(2,5,1,3,3,0),
    EE3=c(3,NA,1,5,3,0),
    EE4=c(3,6,1,2,3,0),
    EE5=c(1,4,1,2,3,5),
    EE6=c(3,1,1,3,3,4),
    EE7=c(5,0,1,5,3,5),
    EE8=c(2,6,1,1,3,3),
    EE9=c(3,4,1,6,3,4)
    )

# Create the additional variable - this will have missing values
bdd$EE <- bdd$EE1+bdd$EE2+bdd$EE3+bdd$EE4+bdd$EE5+bdd$EE6+bdd$EE7+bdd$EE8+bdd$EE9

# create ini to get access to meth and pred
ini <- mice(bdd, max = 0, print = FALSE)

# Change the method of imputation for EE, so that it always equals bdd$EE1+...+bdd$EE9
meth1 <- ini$meth
meth1["EE"] <- "~I(EE1+EE2+EE3+EE4+EE5+EE6+EE7+EE8+EE9)"

pred1 <- ini$pred  
# change the predictor matrix so only bdd$EE1-9 predicts EE (necessary?)
pred1[ "EE", ] <- 0 
pred1[ "EE", c("EE1", "EE2", "EE3", "EE4", "EE5", "EE6", "EE7", "EE8", "EE9")] <- 1
# change the predictor matrix so that EE isnt used to predict
pred1[ , "EE" ] <- 0  


# Imputations
imput <- mice(bdd, seed=1, pred = pred1, meth = meth1, m=1, print = FALSE)
#创建一个示例bdd
bdd=data.frame(
性别=c(“M”、“F”、“M”、“M”、“M”、“F”),
选择=c(1,2,NA,1,1,1),
gardes=c(0,0,0,5,7,NA),
EE1=c(3,4,1,NA,3,0),
EE2=c(2,5,1,3,3,0),
EE3=c(3,NA,1,5,3,0),
EE4=c(3,6,1,2,3,0),
EE5=c(1,4,1,2,3,5),
EE6=c(3,1,1,3,3,4),
EE7=c(5,0,1,5,3,5),
EE8=c(2,6,1,1,3,3),
EE9=c(3,4,1,6,3,4)
)
#创建附加变量-此变量将缺少值

bdd$EE您好,欢迎来到SO,您是否可以添加一些缺少值的示例数据?也许只有几行
bdd
?在没有测试数据的情况下很难消除bug代码谢谢Nate-我马上就要这么做:)简单看一下,不要在插补边界调用中使用数据框,即更改
“~I(bdd$EE1+bdd$EE2…
”~I(EE1+EE2…
非常感谢用户20650!!是的,这是我的错误!我花了很多时间试图找出它,但没有看到这一点。请注意,我不能100%确定更改预测矩阵的代码是否正确。如果您希望使用此代码,请先仔细检查一下。谢谢!
Warning messages:
1: In `[<-.data.frame`(`*tmp*`, , i, value = list(`1` = c(20L, 14L,  :
    replacement element 1 has 456 rows to replace 2 rows
2: In `[<-.data.frame`(`*tmp*`, , i, value = list(`1` = c(20L, 14L,  :
    replacement element 1 has 456 rows to replace 2 rows
3: In `[<-.data.frame`(`*tmp*`, , i, value = list(`1` = c(20L, 14L,  :
    replacement element 1 has 456 rows to replace 2 rows
4: In `[<-.data.frame`(`*tmp*`, , i, value = list(`1` = c(20L, 14L,  :
    replacement element 1 has 456 rows to replace 2 rows
5: In `[<-.data.frame`(`*tmp*`, , i, value = list(`1` = c(20L, 14L,  :
    replacement element 1 has 456 rows to replace 2 rows
      gender choice gardes EE1 EE2 E3 EE4 EE5 EE6 E7 EE8 EE9
1      M      1      0   3   2  3   3   1   3  5   2   3
2      F      2      0   4   5 NA   6   4   1  0   6   4
3      M     NA      0   1   1  1   1   1   1  1   1   1
4      M      1      5  NA   3  5   2   2   3  5   1   6
5      M      1      7   3   3  3   3   3   3  3   3   3
6      F      1     NA   0   0  0   0   5   4  5   3   4
    # Create a sample bdd
bdd=data.frame(
    gender=c("M","F","M", "M", "M", "F"),
    choice=c(1,2,NA,1,1,1),
    gardes=c(0,0,0,5,7,NA),
    EE1=c(3,4,1,NA,3,0),
    EE2=c(2,5,1,3,3,0),
    EE3=c(3,NA,1,5,3,0),
    EE4=c(3,6,1,2,3,0),
    EE5=c(1,4,1,2,3,5),
    EE6=c(3,1,1,3,3,4),
    EE7=c(5,0,1,5,3,5),
    EE8=c(2,6,1,1,3,3),
    EE9=c(3,4,1,6,3,4)
    )

# Create the additional variable - this will have missing values
bdd$EE <- bdd$EE1+bdd$EE2+bdd$EE3+bdd$EE4+bdd$EE5+bdd$EE6+bdd$EE7+bdd$EE8+bdd$EE9

# create ini to get access to meth and pred
ini <- mice(bdd, max = 0, print = FALSE)

# Change the method of imputation for EE, so that it always equals bdd$EE1+...+bdd$EE9
meth1 <- ini$meth
meth1["EE"] <- "~I(EE1+EE2+EE3+EE4+EE5+EE6+EE7+EE8+EE9)"

pred1 <- ini$pred  
# change the predictor matrix so only bdd$EE1-9 predicts EE (necessary?)
pred1[ "EE", ] <- 0 
pred1[ "EE", c("EE1", "EE2", "EE3", "EE4", "EE5", "EE6", "EE7", "EE8", "EE9")] <- 1
# change the predictor matrix so that EE isnt used to predict
pred1[ , "EE" ] <- 0  


# Imputations
imput <- mice(bdd, seed=1, pred = pred1, meth = meth1, m=1, print = FALSE)