首页 > 解决方案 > 使用带有 %like% 运算符的重新编码函数

问题描述

无论如何使用dplyr%like% 运算符 fromDescTools以及“其他”语句的 recode 函数?即如下所示:

library(tidyverse)
library(DescTools)

dat <- data.frame(NAME = c("Bill", "Billy", "Wibill", "Chris"))

dat %>%
  mutate(NAME_2 = recode(NAME, "%Bill%" = "Willhelm", "Other"))

期望的输出是:

NAME      NAME_2
Bill      Willhelm
Billy     Willhelm
Wibill    Willhelm
Chris     Other

标签: rtidyverse

解决方案


不是这样的recode()recode()将特定值与特定替换匹配。mutate()但是,使用and很容易实现您想要的输出if_else()

dat %>%
    mutate(NAME_2 = if_else(NAME %like% "%[Bb]ill%", "Willhelm", "Other"))

    NAME   NAME_2
1   Bill Willhelm
2  Billy Willhelm
3 Wibill Willhelm
4  Chris    Other

(尽管您会注意到我必须考虑大写或小写的“Bill”,%like%如果您想要的输出不区分大小写,那么任何使用都会出现这种情况。)


推荐阅读