我有一个看起来像这样的数据集(A-J是列名)
A B C D E F G H I J
1 2 2 3 2 1 1 1 1
2 1 1 1 1 1 1 1 1 1
2 1 2 2 2 2 2 2 1 1
2 1 2 1 1 1 1 1 1 1
2 1 3 3 3 2 2 2 2
2 1 3 2 2 3 1 1 1 1
1 3 2 1 2 2 2 1 2
2 1 2 2 2 2 2 2 1 1
1 2 2 2 2 1 1 1 1
2 1 2 1 1 1 2 1 1 1
2 1 1 1 1 1 2 2 1 1
2 1 2 1 1 1 1 1 1 2
2 1 1 1 1 1 1 1
2 1 3 3 3 3 1 1 1 2
1 2 2 1 2 1 1 1 1
1 2 2 2 2 2 2 1 1
2 2 4 1 1 1 2 2 1 1
1 1 3 3 3 3
2 1 3 3 1 2 2 2 2 3
我收到以下错误 -
Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘complete’ for signature ‘"mids", "numeric"’
我的数据有很多NULL值,我试图使用下面的代码来估算数据 -
imp_data<-mice(data = data_NA, m = 5, method = "rf", maxit = 5, seed = 500)
运行代码时出现错误 -
complete(imp_data,1)
请建议我做错的地方
答案 0 :(得分:1)
似乎NA
data.frame中没有正确分配data_NA
值导致问题。
修改后的数据(包含NA
)并使用mice
对其进行转换,因为它对我有用:
library(mice)
imp_data <- mice(data = data_NA, m = 5, method = "rf", maxit = 5, seed = 500)
complete(imp_data, 1)
已编辑:OP看到的错误已通过将呼叫更改为:
来解决mice::complete(imp_data, 1)
可能是mice::complete
被某些函数掩盖了其他包。
#Result
# A B C D E F G H I J
# 1 1 2 2 3 2 1 1 1 1 2
# 2 2 1 1 1 1 1 1 1 1 1
# 3 2 1 2 2 2 2 2 2 1 1
# 4 2 1 2 1 1 1 1 1 1 1
# 5 2 1 1 3 3 3 2 2 2 2
# 6 2 1 3 2 2 3 1 1 1 1
# 7 1 3 2 1 2 2 2 1 2 1
# 8 2 1 2 2 2 2 2 2 1 1
# 9 1 2 2 2 2 1 1 1 1 1
# 10 2 1 2 1 1 1 2 1 1 1
# 11 2 1 1 1 1 1 2 2 1 1
# 12 2 1 2 1 1 1 1 1 1 2
# 13 2 1 1 1 1 1 1 1 1 1
# 14 2 1 3 3 3 3 1 1 1 2
# 15 1 2 2 1 2 1 1 1 1 1
# 16 1 2 2 2 2 2 2 1 1 1
# 17 2 2 4 1 1 1 2 2 1 1
# 18 1 1 3 3 3 3 2 1 2 1
# 19 2 1 3 3 1 2 2 2 2 3
#
数据强>
data_NA<- read.table(text =
"A B C D E F G H I J
1 2 2 3 2 1 1 1 1 NA
2 1 1 1 1 1 1 1 1 1
2 1 2 2 2 2 2 2 1 1
2 1 2 1 1 1 1 1 1 1
2 1 NA 3 3 3 2 2 2 2
2 1 3 2 2 3 1 1 1 1
1 3 2 1 2 2 2 1 2 NA
2 1 2 2 2 2 2 2 1 1
1 2 2 2 2 1 1 1 1 NA
2 1 2 1 1 1 2 1 1 1
2 1 1 1 1 1 2 2 1 1
2 1 2 1 1 1 1 1 1 2
2 1 1 1 NA NA 1 1 1 1
2 1 3 3 3 3 1 1 1 2
1 2 2 1 2 1 1 1 1 NA
1 2 2 2 2 2 2 1 1 NA
2 2 4 1 1 1 2 2 1 1
1 1 3 3 3 3 NA NA NA NA
2 1 3 3 1 2 2 2 2 3",header = TRUE)