如何在不对每个变量进行编码的情况下对多个变量使用相同的 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"
根据重新编码示例,如果我有两个变量想要应用相同的重新编码怎么办?
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"