用一些空字符串重新编码字符向量

Jea*_*ams 1 r dplyr

我一直在使用该dplyr::recode()函数来重新编码一些变量。我有一个带有一些空字符串的字符变量,我也想重新编码。但是,如果我在函数的参数中引用空字符串,则会出现错误。

# input
x <- c("a", "b", "", "x", "y", "z")
# desired output
c("Apple", "Banana", "Missing", "x", "y", "z")

dplyr::recode(x, "a"="Apple", "b"="Banana", ""="Missing")

Error: attempt to use zero-length variable name
Run Code Online (Sandbox Code Playgroud)

如果我将空字符串视为缺失值,则该函数会将其保留为空字符串。

dplyr::recode(x, "a"="Apple", "b"="Banana", .missing="Missing")

[1] "Apple"  "Banana" ""       "x"      "y"      "z"     
Run Code Online (Sandbox Code Playgroud)

如何重新编码值以获得所需的输出?

Pie*_*nte 6

您可以使用na_if.missing正常工作:

x <- c("a", "b", "", "x", "y", "z")
dplyr::recode(na_if(x,""), "a"="Apple", "b"="Banana", .missing="Missing")

[1] "Apple"   "Banana"  "Missing" "x"       "y"       "z" 
Run Code Online (Sandbox Code Playgroud)