dplyr变异以替换数据帧中的特定值

dplyr变异以替换数据帧中的特定值,r,dplyr,mutate,R,Dplyr,Mutate,我有一个由字符a、b、x、y组成的数据帧 df <- data.frame(v1 = c("a", "b", "x", "y"), v2 = c("a", "b", "a", "y")) 使用映射创建命名向量,然后使用mutate_all将其子集 在R基地,那将是公正的 df[] <- vec[unlist(df)] 资料 使用映射创建命名向量,然后使用mutate_all将其子集 在R基地,那将是公正的 df[] <- vec[unlis

我有一个由字符a、b、x、y组成的数据帧

df <- data.frame(v1 = c("a", "b", "x", "y"),
                 v2 = c("a", "b", "a", "y"))

使用映射创建命名向量,然后使用mutate_all将其子集

在R基地,那将是公正的

df[] <- vec[unlist(df)]
资料


使用映射创建命名向量,然后使用mutate_all将其子集

在R基地,那将是公正的

df[] <- vec[unlist(df)]
资料


一种解决方案可以是在以下情况下使用case_:


一种解决方案可以是在以下情况下使用case_:


也许car::recode在这里会有帮助?也许car::recode在这里会有帮助?
df[] <- vec[unlist(df)]
df <- data.frame(v1 = c("a", "b", "x", "y"),
                 v2 = c("a", "b", "a", "y"), stringsAsFactors = FALSE)
df %>% 
  mutate_all(funs(case_when(. == "a" ~ 0, 
                            . %in% c("b", "x") ~ 1, 
                            . == "y" ~ 2, 
                            TRUE ~ NA_real_)))

#   v1 v2
# 1  0  0
# 2  1  1
# 3  1  0
# 4  2  2