57  as.factorで作成する

それでは、ここでは因子型を作成していきます。まずは、1つ前の動画で作成したalcohol変数を変換してみましょう。

とはいっても、スライドで解説した通り、

alcohol = c("週1日以内","週4-6日","週4-6日","毎日","のまない","週1-3日","毎日")
as.factor(alcohol)
[1] 週1日以内 週4-6日   週4-6日   毎日      のまない  週1-3日   毎日     
Levels: のまない 週1-3日 週1日以内 週4-6日 毎日

としてあげるだけです。

実行結果をみると含まれるデータの表示のあとに、

5 Levels: のまない 週1-3日 週1日以内 … 毎日

となっています。

vec_f <- as.factor(alcohol)

因子型に変更した時点で、

as.numeric(alcohol)
Warning: NAs introduced by coercion
[1] NA NA NA NA NA NA NA
as.character(alcohol)
[1] "週1日以内" "週4-6日"   "週4-6日"   "毎日"      "のまない"  "週1-3日"  
[7] "毎日"     
as.numeric(vec_f) 
[1] 3 4 4 5 1 2 5
as.character(vec_f)
[1] "週1日以内" "週4-6日"   "週4-6日"   "毎日"      "のまない"  "週1-3日"  
[7] "毎日"     

で変換される挙動が文字列型とはちがってきていますね?

スライドで解説した、対応表というのは、

levels(vec_f)
[1] "のまない"  "週1-3日"   "週1日以内" "週4-6日"   "毎日"     

Levelsという関数でみることができるため、実行結果の一つ目が数字の1に対応して、全部で5levelあるような形になっています。

次の動画では、この水準を手動で置き換える方法について解説していきます。