有兩種方法可以表示因子中的缺失值:在值中和在水平中。值中的 NA
對於數據分析最有用(因為 is.na()
返回您期望的內容),但由於 NA
沒有顯式記錄在級別中,因此無法控製其位置(它幾乎總是顯示)最後或根本沒有)。將 NA
放入級別中可以讓您控製其顯示,但代價是失去準確的 is.na()
報告。
(可能有一個因子在值和水平上都缺失值,但它需要一些明確的體操,我們不建議這樣做。)
例子
# Most factors store NAs in the values:
f1 <- fct(c("a", "b", NA, "c", "b", NA))
levels(f1)
#> [1] "a" "b" "c"
as.integer(f1)
#> [1] 1 2 NA 3 2 NA
is.na(f1)
#> [1] FALSE FALSE TRUE FALSE FALSE TRUE
# But it's also possible to store them in the levels
f2 <- fct_na_value_to_level(f1)
levels(f2)
#> [1] "a" "b" "c" NA
as.integer(f2)
#> [1] 1 2 4 3 2 4
is.na(f2)
#> [1] FALSE FALSE FALSE FALSE FALSE FALSE
# If needed, you can convert back to NAs in the values:
f3 <- fct_na_level_to_value(f2)
levels(f3)
#> [1] "a" "b" "c"
as.integer(f3)
#> [1] 1 2 NA 3 2 NA
is.na(f3)
#> [1] FALSE FALSE TRUE FALSE FALSE TRUE
相關用法
- R forcats fct_relevel 手動重新排序因子級別
- R forcats fct_anon 匿名因子水平
- R forcats fct_inorder 按首次出現、頻率或數字順序對因子水平重新排序
- R forcats fct_rev 因子水平的倒序
- R forcats fct_match 測試因子中是否存在水平
- R forcats fct_relabel 使用函數重新標記因子水平,並根據需要折疊
- R forcats fct_drop 刪除未使用的級別
- R forcats fct_c 連接因子,組合級別
- R forcats fct_collapse 將因子級別折疊為手動定義的組
- R forcats fct_shuffle 隨機排列因子水平
- R forcats fct_cross 組合兩個或多個因子的水平以創建新因子
- R forcats fct_other 手動將級別替換為“其他”
- R forcats fct_recode 手動更改因子水平
- R forcats fct_lump 將不常見因子集中到“其他”級別
- R forcats fct_unique 一個因子的唯一值,作為一個因子
- R forcats fct_shift 將因子水平向左或向右移動,在末尾環繞
- R forcats fct_unify 統一因子列表中的水平
- R forcats fct_count 計算因子中的條目數
- R forcats fct_expand 向因子添加附加級別
- R forcats fct_reorder 通過沿另一個變量排序來重新排序因子水平
- R forcats fct 創建一個因子
- R forcats as_factor 將輸入轉換為因子
- R forcats lvls_union 查找因子列表中的所有級別
- R forcats lvls 用於操縱級別的低級函數
- R forcats gss_cat 一般社會調查中的分類變量樣本
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Convert between NA values and NA levels。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。