![](/img/trans.png)
[英]Failure to recode levels of a factor with dplyr mutate() and recode_factor
[英]Why does recode_factor not allow to drop levels?
我喜歡recode_factor
的dplyr
因為它可以讓您 (1) 重新編碼因子級別並 (2) 同時對它們進行排序。 我也喜歡它如何讓您 (3) 在您將數字向量轉換為因子向量時降低級別。 例如:
num_vec <- c(1:4, NA)
recode_factor(num_vec, `1` = "z", `2` = "y", `3` = "x", .ordered = TRUE,)
[1] z y x <NA> <NA>
Levels: z < y < x
請注意未重新編碼的值4
是如何變成NA
因為它被解釋為“不兼容”。 對我來說,這種行為是實用的。 不幸的是,對於字符向量是不可能的(因為它們被解釋為兼容):
chr_vec <- c("a", "b", "c", "d", NA)
recode_factor(chr_vec, `a` = "z", `b` = "y", `c` = "x", .ordered = TRUE,)
[1] z y x d <NA>
Levels: z < y < x < d
請注意, d
沒有變成NA
,而是保持其自身。
有沒有辦法解決后一種行為 - 代碼同樣短? 我知道指定levels
的常用factor
方法,但據我所知,執行 (1) 級別的重新編碼 (2) 對它們進行排序 (3) 將某些級別轉換為NA
需要更多代碼。
recode_factor
有一個.default
參數(參見幫助文件中的第三個示例):
recode_factor(chr_vec, `a` = "z", `b` = "y", `c` = "x",
.ordered = TRUE,
.default = NA_character_)
# [1] z y x <NA> <NA>
# Levels: z < y < x
.default
參數:
如果提供,則所有未匹配的值都將被賦予此值。 如果未提供並且替換與 .x 中的原始值類型相同,則不會更改不匹配的值。 如果未提供且替換項不兼容,則不匹配的值將替換為 NA。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.