r语言 - 为因子变量 NA 插补 NA 并将其转换为虚拟变量



我有一个数据框,其中某些变量(列)是阶乘,当我缺少某些记录时(na)。

问题是:

  1. 在阶乘变量中替换 pumputa的正确方法是什么?

    例如,具有4个级别{" a"," b"," c"," d"}的V varx-用替换NAS替换NAS的值是什么?A B C D?也许只是0?也许将这种变量观测值的多数归咎于?

  2. 如何基于对1的答案?

  3. 实施此类插补
  4. 一旦解决了1& 2,我将使用以下来为阶乘变量创建虚拟变量:

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

    之后,如何将my_data中的所有阶乘变量替换为我提取到my_data.dummy_vars的虚拟变量?

我的用例是之后计算主组件(所有变量都需要具有数值,因此虚拟变量)

谢谢

感谢您澄清您的意图 - 这确实有帮助!这是我的想法:

  1. 推出缺失的数据是一个非平凡的问题,对于交叉验证的优秀人士来说,这是一个很好的问题。这个问题只能由您(主题专家)在项目的上下文中真正解决。一个很大的问题是,是否随机丢失了丢失值,还是作为其他一些变量的函数,以及是否观察到这些变量或未观察到这些变量。如果您得出结论认为它们是其他(观察到的)变量的函数,则甚至可以考虑使用GLM的方法。到目前为止,最简单的方法(如果您没有太多缺少的值)就是要用mydata2 <- mydata[!is.na(TheFactorInQuestion),]之类的内容删除这些行,我会再说一遍,丢失数据的归因是一个不平凡的问题,应该仔细考虑,并且在上下文中。也许一种好的方法是尝试一些插补方法,看看(以及您的推论如何改变)。如果它们不变(太多),您会知道您不必担心。

  2. 可以使用相当简单的mydata2 <- mydata[!is.na(TheFactorInQuestion),]进行掉落行。如果您做任何其他形式的插补(从某种意义上说,"构成"数据),我会主张在得出正确的决定之前长期努力地思考这样做。而且,当然可能是。

  3. 使用CBIND加入两个数据。Frames非常简单,例如my_data2 <- cbind(my_data, my_data.dummy_vars)。如果您需要使用因子数据删除列,则my_data3 <- my_data2[,-5]如果因素数据在第5列中。

由虚拟变量,您是指零和一个吗?这就是我的结构方式:

# 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

最新更新