有两种方法可以表示因子中的缺失值:在值中和在水平中。值中的 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。