如何在不对每个变量进行编码的情况下对多个变量使用相同的 R 重新编码函数?

How to use the same R recode function on multiple variables without coding each?

根据重新编码示例,如果我有两个变量想要应用相同的重新编码怎么办?

factor_vec1 <- factor(c("a", "b", "c"))
factor_vec2 <- factor(c("a", "d", "f"))

如何在不为每个 factor_vec 重新编码的情况下重新编码相同的答案?这些都不行,我需要学习如何使用 purrr 来做到这一点,还是有其他方法?

Output 1: recode(c(factor_vec1, factor_vec2), a = "Apple")
Output 2: recode(c(factor_vec2, factor_vec2), a = "Apple", b = 
"Banana")

使用列表来保存多个向量,然后您可以使用 lapply/map 应用相同的函数。

library(dplyr)
list_fac <- lst(factor_vec1, factor_vec2)
list_fac <- purrr::map(list_fac, recode, a = "Apple", b = "Banana")

您可以将矢量保留在列表本身中(这样更好)或使用 list2env 在全局环境中获取更改后的矢量。

list2env(list_fac, .GlobalEnv)

如果需要重新编码的项目不多,您可以尝试使用基本 R 的简单查找 table 方法。

v1 <- c("a", "b", "c")
v2 <- c("a", "d", "f")

# lookup table 
lut <- c("a" ="Apple", 
         "b" = "Banana",
         "c" = "c",
         "d" = "d", 
         "f" = "f")

lut[v1]
lut[v2]

您可以为任何相关变量重复使用查找 table。结果是:

> lut[v1]
       a        b        c 
 "Apple" "Banana"      "c" 

> lut[v2]
      a       d       f 
"Apple"     "d"     "f"