使用带有model.matrix的NA

时间:2015-12-16 19:52:46

标签: r

假设我有一个变量,我想从中生成虚拟变量。 model.matrix非常有帮助

model.matrix(~iris$Species-1)

但是,假设我缺少值

iris$Species[1]=NA
model.matrix(~iris$Species-1)

这两个model.matrix输出之间的唯一区别是第二个省略了NA的行。我希望model.matrix将NA视为唯一值,并为NA创建一个额外的列。

有没有一种有效的方法可以做到这一点,还是我必须编写一个函数来完成它?

1 个答案:

答案 0 :(得分:4)

一种解决方案可能是将您感兴趣的变量转换为一个因子,并且在执行此操作时不要排除NA:

iris$Species[1] <- NA
mm2 <- model.matrix(~factor(iris$Species, exclude=NULL)-1)
>dim(mm2)
150   4