首页 > 解决方案 > 替换包含模式“No”的多个字符串

问题描述

查看(有点)繁忙的调查数据,我想使用 stringR 和 str_replace() 将“否”的所有变体变成一个“否”。挑战在于,我一直观察到诸如“不,不,不”之类的观察结果,直到连续 9 次。

str_replace() 或其他函数可以一次收集所有这些变化吗?还是我应该纠正许多 str_replace 命令?

这是数据框的代表:

library(tidyverse)
library(stringr)
library(reprex)

dfr <- dput(global_filtered_numeric$x48_enforcement_participation [157:169])

dfr

[1] "No, No, No, No"                                           
 [2] "No"                                                       
 [3] "yes"                                                      
 [4] "yes"                                                      
 [5] "No"                                                       
 [6] "No"                                                       
 [7] "No"                                                       
 [8] "yes"                                                      
 [9] "yes, Yes male, yes, yes, Yes male, Yes female, Yes female"
[10] "yes, yes"                                                 
[11] "yes, yes"                                                 
[12] "No"                                                       
[13] "No"          

第一篇文章/Reprex - 所以我将测试 df 是否真的与 dput 一起出现!

标签: rstringr

解决方案


这里没有必要超出base R:

vec <- c("No, No, No, No", "No", "yes", "yes", "No", "No", "No", "yes", "yes, Yes male, yes, yes, Yes male, Yes female, Yes female", "yes, yes", "yes, yes", "No", "No")
ifelse(nchar(gsub("[no, ]", "", vec, ignore.case = TRUE)), vec, "no")
#  [1] "no"                                                        "no"                                                       
#  [3] "yes"                                                       "yes"                                                      
#  [5] "no"                                                        "no"                                                       
#  [7] "no"                                                        "yes"                                                      
#  [9] "yes, Yes male, yes, yes, Yes male, Yes female, Yes female" "yes, yes"                                                 
# [11] "yes, yes"                                                  "no"                                                       
# [13] "no"                                                       

推荐阅读