R 密斯福里斯特赢得';我不能估算我的分类变量

R 密斯福里斯特赢得';我不能估算我的分类变量,r,rstudio,imputation,R,Rstudio,Imputation,我不是一个有经验的程序员,在过去的几周里,我刚刚开始学习程序员,以帮助完成一些与我的博士学位相关的工作。问题是: 我用R中的missForest软件包将缺失的值填入数据集中已经很多很多小时了,但都没有成功。下面是一个典型的例子,说明了我在处理伪造数据集时遇到的问题 数据集包含分类的数值。导入时,我使用以下代码将类设置为“factor” 返回: [1] "factor" "factor" "factor" 然后我尝试插补并查看数据,但我

我不是一个有经验的程序员,在过去的几周里,我刚刚开始学习程序员,以帮助完成一些与我的博士学位相关的工作。问题是:

我用R中的missForest软件包将缺失的值填入数据集中已经很多很多小时了,但都没有成功。下面是一个典型的例子,说明了我在处理伪造数据集时遇到的问题

数据集包含分类的数值。导入时,我使用以下代码将类设置为“factor”

返回:

[1] "factor" "factor" "factor"
然后我尝试插补并查看数据,但我得到了原始数据集,数据点仍然丢失,而不是插入插补值

    data.imp <- missForest(data)
    data.imp$ximp

a   b   c  
1   2   3  
4   5      
7   8   9  

data.imp这似乎真的是个小问题。在
数据.test
中,有空字符串需要编码为缺少

您可以使用
str

str(data.test)
# 'data.frame': 3 obs. of  3 variables:
# $ a: Factor w/ 3 levels "1","4","7": 1 2 3
# $ b: Factor w/ 3 levels "2","5","8": 1 2 3
# $ c: Factor w/ 3 levels "","3","9": 2 1 3
您可以看到,变量
c
的级别包含
,它也被编码为一个类别

您可以通过执行以下操作轻松解决此问题

data.test[data.test == ""] <- NA
data.test
#   a b    c
# 1 1 2    3
# 2 4 5 <NA>
# 3 7 8    9

我不明白你的数据是什么形状的。你能帮我做一个吗?我把格式弄乱了,但我相信我现在已经更正了,希望它更合理。这个UCI存储库在哪里?我们如何下载这些数据?@cbkcntl请学习如何制作一个最小的、自包含的,此处描述的可复制示例:@jay.sf我将可复制代码添加到我的问题中。您应该能够将它直接粘贴到R中并运行它,并获得与我显示的相同的输出。我也留下了我的原始信息,但如果那样更好的话,我可以删除它。如果我需要更改或添加任何内容,请告诉我。我感谢你的帮助。
#install and load the missForest package and library
install.packages("missForest")
library(missForest)
#create the test data frame with a missing value in column c
a <- c("1","4","7")
b <- c("2","5","8")
c <- c("3","","9")
data.test <- data.frame(a,b,c)
#print the data
data.test
#view the class of the data to ensure it is "factor"
missForest::varClass(data.test)
#create the imputed data frame using missForest
data.test.imp <- missForest(data.test)
#print the imputed data frame
data.test.imp$ximp
> data.test
  a b c
1 1 2 3
2 4 5  
3 7 8 9
> missForest::varClass(data.test)
[1] "factor" "factor" "factor"
> data.test.imp <- missForest(data.test)
  missForest iteration 1 in progress...done!
  missForest iteration 2 in progress...done!
> data.test.imp$ximp
  a b c
1 1 2 3
2 4 5  
3 7 8 9
str(data.test)
# 'data.frame': 3 obs. of  3 variables:
# $ a: Factor w/ 3 levels "1","4","7": 1 2 3
# $ b: Factor w/ 3 levels "2","5","8": 1 2 3
# $ c: Factor w/ 3 levels "","3","9": 2 1 3
data.test[data.test == ""] <- NA
data.test
#   a b    c
# 1 1 2    3
# 2 4 5 <NA>
# 3 7 8    9
data.test.imp <- missForest::missForest(data.test)
data.test.imp$ximp
#   a b c
# 1 1 2 3
# 2 4 5 9
# 3 7 8 9