forcats

forcats

forcats パッケージは factor 型を操作するためのパッケージ

https://kazutan.github.io/kazutanR/forcats_test.html

関数の一覧

library(forcats)
ls("package:forcats")
 [1] "%>%"              "as_factor"        "fct_anon"        
 [4] "fct_c"            "fct_collapse"     "fct_count"       
 [7] "fct_cross"        "fct_drop"         "fct_expand"      
[10] "fct_explicit_na"  "fct_infreq"       "fct_inorder"     
[13] "fct_inseq"        "fct_lump"         "fct_lump_lowfreq"
[16] "fct_lump_min"     "fct_lump_n"       "fct_lump_prop"   
[19] "fct_match"        "fct_other"        "fct_recode"      
[22] "fct_relabel"      "fct_relevel"      "fct_reorder"     
[25] "fct_reorder2"     "fct_rev"          "fct_shift"       
[28] "fct_shuffle"      "fct_unify"        "fct_unique"      
[31] "first2"           "gss_cat"          "last2"           
[34] "lvls_expand"      "lvls_reorder"     "lvls_revalue"    
[37] "lvls_union"   

レベルを並べ替える

既存の factor 型のレベルそのものは変更せずに、レベルの順序を変更する。可視化のときに便利

# レベルが登場する順にならべかえ
forcats::fct_inorder(x) 
# 各レベルの頻度順に並べ替え
forcats::fct_infreq(x) 

# マニュアルで並べ替え
forcats::fct_relevel(x, c("level_C", "level_A", "level_B"))

# 別の変数 y の値を使って並べ替え
# ... には na.rm = TRUE とか
forcats::fct_reorder(x, y, fun = median, ..., .desc = FALSE)

レベルをマージする

# ある割合以下のレベルをOtherにまとめる
forcats::fct_lump_prop(x, prop = 0.01))

# マニュアルで既存のレベルをまとめて新しいレベルを作る
forcats::fct_collapse(gss_cat$partyid,
  new_level_1 = c("Level_A", "Level_B"),
  new_level_2 = "Level_C",
  new_level_3 = c("Level_D", "Level_E"),
)

新しいレベルを追加する

# 欠損値を明示的にレベルに加える
forcats::fct_explicit_na(x, na_level = "Missing")