這篇文章講因子資料的處理。關於因子資料(Factor),我已經在本系列文章《[R Lang] R Lang與高級醫學統計學(2)》中詳細闡述。
對於因子資料的處理,可以使用 tidyverse
套件系統中的 forcats
套件進行處理。
基本函式
forcats
套件的基本函式包含:
- fct_count(f, sort = FALSE, prop = FALSE):計算類別水準數目。
- fct_unique(f):呈現專一類別水準名稱。
- fct_c(f1, f2):合併不同類別水準的 2 個因子物件。
移除或增加類別水準
函式 fct_drop()
可以移除部分類別水準,函式 fct_expand()
可以增加因子變數中的類別水準。函式 fct_explicit_na
可以明確設性缺失值為 1 項類別水準。
改變或合併類別水準函式
系列函式 fct_lump()
可將部分類別水準合併。這個系列包含:
- fct_lump_min():合併類別水準頻率計數低於設定的最小值。
- fct_lump_prop():合併類別水準相對頻率低於設定的最小值。
- fct_lump_n():合併類別水準最多 n 種主要類別。
- fct_lump_lowfreq():合併類別水準,且確保 other 類別的頻率仍是最低。
函式宣告如下:
其中引數 f
為因子向量,n
設定最多 n 種主要類別,prop
設定正值百分率,合併小於 prop 的類別,設定負值百分率,合併大於 prop 的類別。w
設定權重。other_level
設定合併後的類別名稱。ties.method
處理相同排序方式。min
保留至少出現 min 次類別。
類別重新排列函式
因子資料的類別重新排序函式有:
- fct_rev(f):將反轉原有類別出現的排列順序。
- fct_shuffle(f, n = 1L):將原有類別出現的排列順序隨機變更。
- fct_reorder(.f, .x, .fun = median, …, .desc = FALSE)
- fct_reorder2(.f, .x, .y, .fun = last2, …, .desc = TRUE)
- first2(.x, .y)
- last2(.x, .y)
fct_reorder()
將因子 f 類別出現的排列順序依照其他變數更動,fct_reorder2()
保留因子 f 原有類別出現的排列順序。當 y 變數依照 x 變數排序,函式 first2(.x, .y)
與 last2(.x, .y)
可尋找 y 變數的最前與最後的 2 個數值。
引數解釋:
- .f:為主要因子變數。
- .x, .y:為其他變數。
- .fun:為摘要函式。
- .desc = FALSE:由小到大排序。