【问题标题】:Assigning factors to columns in matrix in R将因子分配给R中矩阵中的列
【发布时间】:2018-05-14 13:02:16
【问题描述】:

我正在尝试使用 missForest 包将丢失的数据归入一个相当大的数据集中。

missForest 以带有缺失值的数据矩阵的形式获取数据。列对应于变量,行对应于观察。因此,我将我的数据框转换为矩阵,无意中将我所有的分类变量都转换为数值类型。

有谁知道如何将矩阵的一列分配为因子??

非常感谢!!!

【问题讨论】:

  • 如果你提供一个数据和代码的例子会很有用,所以我们可以开始帮助你一个具体的例子
  • 你不能。数据框和矩阵的区别在于,数据框可以有不同类别的列,但矩阵中的所有内容都必须是一个类别。您应该做的是使用model.matrix 将您的数据帧转换为具有正确编码因子as in this FAQ 的矩阵。 (也知道您正在运行的任何模型例程也会将您的数据帧转换为矩阵,可能使用基于公式的model.matrix。它只会在内部完成。)有关此的更多阅读,请查找“一个热编码"。
  • 好的,我继续制作虚拟变量并使用虚拟编码矩阵运行missForest。我仍然得到十进制值而不是 1 和 0。有些值甚至是负数!!!我该怎么办?!?

标签: r dataframe matrix imputation


【解决方案1】:

好的,让我添加更多细节。

我有一个包含以下列的数据框。

 homt_sub<-homt[c("CASEID","REASON","PSYPROB","SUB2.2","FREQ1","FRSTUSE1","FREQ2","AGEcont","GENDER", "RACE2", "ARRESTS")]

唯一的连续变量是 AGEcont。其余的都是因素。我必须制作一个矩阵才能使用 missForest 函数。

homt_matrix<-data.matrix(homt_sub, rownames.force = NA)
homt_sub.imp <- missForest(homt_matrix, verbose= TRUE, maxiter = 3, ntree = 20)

我可以从这里提取插补,但我得到十进制值,因为它们被视为连续变量。

model.matrix 可能是一个解决方案,但创建这么多额外变量、获取估算数据然后将其折叠回每个变量的一列似乎有点麻烦?我知道有一种方法可以使用因子变量运行 randomForest,但目前还不清楚如何去做。

非常感谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多