假设我有一个变量,我想从中生成虚拟变量。 model.matrix
非常有帮助
model.matrix(~iris$Species-1)
但是,假设我缺少值
iris$Species[1]=NA
model.matrix(~iris$Species-1)
这两个model.matrix输出之间的唯一区别是第二个省略了NA的行。我希望model.matrix
将NA视为唯一值,并为NA创建一个额外的列。
有没有一种有效的方法可以做到这一点,还是我必须编写一个函数来完成它?
答案 0 :(得分:4)
一种解决方案可能是将您感兴趣的变量转换为一个因子,并且在执行此操作时不要排除NA:
iris$Species[1] <- NA
mm2 <- model.matrix(~factor(iris$Species, exclude=NULL)-1)
>dim(mm2)
150 4