[R Lang] R Lang與高級醫學統計學(10)
這篇文章講因子資料的處理。關於因子資料(Factor),我已經在本系列文章《[R Lang] R Lang與高級醫學統計學(2)》中詳細闡述。
對於因子資料的處理,可以使用tidyverse
套件系統中的forcats
套件進行處理。
基本函式
forcats
套件的基本函式包含:
- fct_count(f, sort = FALSE, prop = FALSE):計算類別水準數目。
- fct_unique(f):呈現專一類別水準名稱。
- fct_c(f1, f2):合併不同類別水準的2個因子物件。
1 | library(dplyr) |
移除或增加類別水準
函式fct_drop()
可以移除部分類別水準,函式fct_expand()
可以增加因子變數中的類別水準。函式fct_explicit_na
可以明確設性缺失值為1項類別水準。
1 | f <- factor(c("F", "M"), levels = c("F", "M", "Other")) |
改變或合併類別水準函式
系列函式fct_lump()
可將部分類別水準合併。這個系列包含:
- fct_lump_min():合併類別水準頻率計數低於設定的最小值。
- fct_lump_prop():合併類別水準相對頻率低於設定的最小值。
- fct_lump_n():合併類別水準最多n種主要類別。
- fct_lump_lowfreq():合併類別水準,且確保other類別的頻率仍是最低。
函式定義如下:
1 | fct_lump(f, n, prop, w = NULL, other_level = "Other", |
其中引數f
為因子向量,n
設定最多n種主要類別,prop
設定正值百分率,合併小於prop的類別,設定負值百分率,合併大於prop的類別。w
設定權重。other_level
設定合併後的類別名稱。ties.method
處理相同排序方式。min
保留至少出現min次類別。
1 | x <- factor(rep(LETTERS[1:9], times = c(40, 10, 5, 27, 1, 1, 1, 1, 1))) |
類別重新排列函式
因子資料的類別重新排序函式有:
- 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:由小到大排序。
1 | f <- factor(c("a", "b", "c")) |