簡體   English   中英

為什么 recode_factor 不允許降級?

[英]Why does recode_factor not allow to drop levels?

我喜歡recode_factordplyr因為它可以讓您 (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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM