そもそもlm()(とglm())には「data.frameの列がfactorである場合、自動的にダミー変数を作って、回帰してくれる」という機能がある(manにきちんと書かれてないので知らない人が多いかも)。
が、lmやglmの「自動でダミー変数を作る機能」だと思うようなダミー変数にならない場合もあるので、パッケージでダミー変数を作ることを考える。
いくつかパッケージがあるが、それなりに使いやすいパッケージとしてfastDummiesがあるため、その中のdummy_cols()を使ってダミー変数を作る方法を以下に記す。
require(fastDummies)
require(tidyverse)
when <- data.frame(time = c("afternoon", "night", "afternoon", "morning", "morning", "morning", "morning", "afternoon", "afternoon"), day = c("Mon", "Mon", "Mon", "Wed", "Wed", "Fri", "Sat", "Sat", "Fri"))
when[3, "day"] <- NA
when %>% head()
dummy_cols(when)
# 自分用のメモ:現時のバージョンのfastDummiesではNAはNAのままで各列に入力される(以前は違ったようだが)。
参考(4つのパッケージの比較)