代码之家  ›  专栏  ›  技术社区  ›  Pryore

替换字符串中除一个以外的所有单词时出现问题

  •  -2
  • Pryore  · 技术社区  · 7 年前

    我有一个简单的问题:

    我有一个包含数千个值的列,我正试图将其转换为一个二分变量(yes no)。用“No”替换字符串非常简单,因为我要转换的值是一个星号

    Data$Complete <- gsub("\\*", "No", Data$Complete)
    

    但是当我试图替换除“no”之外的所有内容时,下面的代码将字符串中的所有内容替换为“yes”。我不明白为什么我要把除了“不”之外的所有东西都替换掉:

    Data$Complete <- Data[!Data$Complete %in% c("No"), "Complete"] <- "Yes" 
    

    任何指点都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Artem Alex Seam    7 年前

    你可以使用 ifelse 功能和 grepl 提取必要的数据如下:

    library(stringi)
    
    # data simulation
    set.seed(123)
    n <- 1000
    data <- data.frame(
      complete = stri_rand_strings(n = n, length = 20, pattern = "[A-Za-z0-9\\*]")
    )
    
    # string matching
    data$yes_no <- ifelse(grepl("\\*", data$complete), "No", "Yes")
    head(data)
    

    输出:

                  complete yes_no
    1 HmOsw1WtXRxRfZ5tE1Jx    Yes
    2 tgdzehXaH8xtgn0TkCJD    Yes
    3 7PPM87DSFr1Qn6YC7ktM    Yes
    4 e4NGoRoonQkch*SCMbL6     No
    5 EfPm5QztsA7eKeJAm4SV    Yes
    6 aJTxTtubO8vH2wi7XxZO    Yes