我正在使用 dummies 包中的 R dummy.data.frame 函数为我的因子的 k 个级别创建虚拟变量。不幸的是,我的因素有 NA。当我使用 dummy.data.frame 时,它会创建 k 个没有 NA 的虚拟对象和一个新的虚拟对象,它用 1 个缺失值标记。但是,我希望在 k 假人中仍然有 NA,而不是缺失值的假人。
这个功能有可能吗?你知道任何其他可以帮助我的功能吗?
我正在使用 dummies 包中的 R dummy.data.frame 函数为我的因子的 k 个级别创建虚拟变量。不幸的是,我的因素有 NA。当我使用 dummy.data.frame 时,它会创建 k 个没有 NA 的虚拟对象和一个新的虚拟对象,它用 1 个缺失值标记。但是,我希望在 k 假人中仍然有 NA,而不是缺失值的假人。
这个功能有可能吗?你知道任何其他可以帮助我的功能吗?
我通常使用model.matrix()
. 将其与设置为 pass 的选项 na.action 一起使用会将 NA 保留在正确的位置。此选项似乎不会改变函数的行为dummy()
,因此使用model.matrix()
可能是您最简单的选择。例如,对于单因素字母,以下应该可以解决问题:
options(na.action="na.pass")
letters <- c( "a", "a", "b", "c", "d", "e", "f", "g", "h", "b", "b", NA )
model.matrix(~letters-1)
或者对于数据框的多个变量或列:
letters <- c( "a", "a", "b", "c", "d", "e", "f", "g", "h", "b", "b", NA )
betters <- c( "a", "a", "c", "c", "c", "d", "d", "d", NA, "e", "e", "e" )
model.matrix(~letters+betters-1)
这里真正的重要技巧是设置选项 na.action。在这个虚拟重新编码之后,将选项返回到其默认值是一个好主意:
options(na.action="na.omit")