R 因子变量NAs的插补NAs&;将它们转换为虚拟变量

R 因子变量NAs的插补NAs&;将它们转换为虚拟变量,r,dataframe,dummy-variable,R,Dataframe,Dummy Variable,我有一个数据框架,其中一些变量(列)是阶乘的,而对于一些记录,我缺少值(NA) 问题是: 在阶乘变量中替换\输入NAs的正确方法是什么 e、 具有4个级别{“A”、“B”、“C”、“D”}的g VarX-将NAs替换为什么样的首选值?A\B\C\D?也许只有0?是否可以用该变量观测值的多数水平进行估算 根据对1的回答,如何实施这种插补 解决1和2后,我将使用以下方法为阶乘变量创建虚拟变量: is.fact <- sapply(my_data, is.factor) my_data.dumm

我有一个数据框架,其中一些变量(列)是阶乘的,而对于一些记录,我缺少值(NA)

问题是:

  • 在阶乘变量中替换\输入NAs的正确方法是什么

    e、 具有4个级别{“A”、“B”、“C”、“D”}的g VarX-将NAs替换为什么样的首选值?A\B\C\D?也许只有0?是否可以用该变量观测值的多数水平进行估算

  • 根据对1的回答,如何实施这种插补

  • 解决1和2后,我将使用以下方法为阶乘变量创建虚拟变量:

    is.fact <- sapply(my_data, is.factor)
    my_data.dummy_vars <- dummy.data.frame(my_data[, is.fact], sep = ".")
    

    is.fact虚拟变量,你是指0和1吗?这就是我的结构:

    # first building a fake data frame
    x <- 1:10
    y <- as.factor(c("A","A","B","B","C","C",NA,"A","B","C"))
    df <- data.frame(x,y)
    
    # creating dummy variables 
    df$dummy_A <- 1*(y=="A")
    df$dummy_B <- 1*(y=="B")
    df$dummy_c <- 1*(y=="C")
    
    # did it work?
    df
        x    y dummy_A dummy_B dummy_c
    1   1    A       1       0       0
    2   2    A       1       0       0
    3   3    B       0       1       0
    4   4    B       0       1       0
    5   5    C       0       0       1
    6   6    C       0       0       1
    7   7 <NA>      NA      NA      NA
    8   8    A       1       0       0
    9   9    B       0       1       0
    10 10    C       0       0       1
    
    #首先构建一个假数据帧
    
    谢谢你澄清你的意图-这真的很有帮助!以下是我的想法:


  • 插补缺失数据是一个非常重要的问题,对于crossvalidated公司的优秀员工来说可能是一个好问题。这是一个只有在项目背景下,由您(主题专家)才能真正解决的问题。一个大问题是缺失值是随机缺失,还是作为其他变量的函数缺失,以及这些缺失值是观察到的还是未观察到的。如果你把它们作为其他(观察到的)变量的函数来排除,你甚至可以考虑基于模型的方法,也许使用GLM。到目前为止,最简单的方法(如果没有太多缺少的值)是使用类似于
    mydata2的内容删除这些行。您可以提供一个小示例,说明您是如何拥有这些行的以及您希望得到什么吗?你打算怎么治疗安娜?我不知道这是否是一个重复的问题,例如,请参阅。我不确定应该如何处理阶乘变量的NAs。在转换为虚拟变量之前用0替换它们是个好主意吗?如果是这样的话,我很乐意学习如何做so@DavidLeal编辑后请看我的帖子,我希望我的意图现在更清楚。我的意思是,如果一个阶乘变量有4个级别,它将被5个虚拟变量替换。为什么需要被5个替换?需要变量的第五种情况是什么?据我所知,n级变量是用n+1虚拟变量表示的,我不明白你的意思。实际上,为了包含相同数量的信息,只需要n-1个变量。根据您所做的分析,为每个可能的因素级别(如上面所建议的)编码一个变量可能会导致参数化过度的模型。我将尝试查找我的评论参考。这其实并不重要,因为我使用的是dummies库。我的问题是如何预处理(如果有的话)一些记录中包含NA的阶乘变量?在我使用dummies库创建它们之后,hpw用这些虚拟变量替换数据中的实际阶乘变量?谢谢!恐怕删除行不是我的选择(项目约束)。我将与交叉验证人员协商正确的方法-用0或多数值替换。你能帮我写下这些代码吗?(将NAs替换为0 \并使用每个因子的多数级别)Nevermind,我被介绍到R中的mice()包中,它似乎为我考虑了每个缺少的值列(简而言之..)。非常感谢。