有没有办法将dpylr的重新编码功能与查找表(data.frame或list)一起使用?
我希望看到的内容如下:
# Recode values with list of named arguments
data <- sample(c("a", "b", "c", "d"), 10, replace = T)
lookup <- list(a = "Apple", b = "Pear")
dplyr::recode(data, lookup)
我在 plyr 包中找到了 mapvalues 和 revalue 函数。如here所述,可以将它们组合起来。 但是,我想知道只有 dplyr 才能实现类似的东西。
答案 0 :(得分:5)
我们可以使用base R
v1 <- unlist(lookup)[data]
ifelse(is.na(v1), data, v1)
答案 1 :(得分:5)
do.call(dplyr::recode, c(list(data), lookup))
[1] "Pear" "c" "d" "c" "Pear" "Pear" "d" "c" "d" "c"
答案 2 :(得分:1)
它是这样的:
dplyr::recode(data, !!!lookup)
对于在数据帧小标题中进行mutate也很有用:
df <- tibble(code = data)
df %>%
mutate(fruit = recode(code, !!!lookup))