Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 对%like%运算符使用重新编码功能_R_Tidyverse - Fatal编程技术网

R 对%like%运算符使用重新编码功能

R 对%like%运算符使用重新编码功能,r,tidyverse,R,Tidyverse,是否可以将dplyr中的recode函数与DescTools中的%like%运算符以及“other”语句一起使用?i、 e.如下所示: library(tidyverse) library(DescTools) dat <- data.frame(NAME = c("Bill", "Billy", "Wibill", "Chris")) dat %>% mutate(NAME_2 = recode(NAME, "%Bill%" = "Willhelm", "Other"))

是否可以将
dplyr
中的recode函数与
DescTools
中的%like%运算符以及“other”语句一起使用?i、 e.如下所示:

library(tidyverse)
library(DescTools)

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

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

这不是
recode()
的工作原理<代码>重新编码()将特定值与特定替换匹配。但是,使用
mutate()
if\u else()
可以轻松实现所需的输出:


(虽然你会注意到我必须解释大写或小写的“Bill”,如果你想要的输出不区分大小写,那么任何使用
%like%
的情况都是如此。)

另一个选项是
base R中的
grepl

dat$NAME_2 <- with(dat, ifelse(grepl("Bill", NAME, ignore.case = TRUE), "Willhelm", "Other"))
dat$NAME\u 2
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
dat$NAME_2 <- with(dat, ifelse(grepl("Bill", NAME, ignore.case = TRUE), "Willhelm", "Other"))