【问题标题】:Removing words after "-" except for specified strings删除“-”之后的单词,除了指定的字符串
【发布时间】:2021-11-20 01:50:51
【问题描述】:

是否有一种简单的方法可以删除所有颜色但保留所有汽车模型(“X-12”和“X-12”)?我尝试过使用str_remove(),但如果不去掉“X-12”和“X - 12”,我似乎无法移除颜色。

x <- c("Car X-12 - Red",
       "Car One - Blue",
       "Car X - 12 - Black and Green",
       "Car Two - Yellow",
       "Car Three - Purple and Red",
       "Car Four - Olive",
       "Car Five - Orange",
       "Car X-12 - Black and White")

desired_output <- c("Car X-12",
                    "Car One",
                    "Car X - 12",
                    "Car Two",
                    "Car Three",
                    "Car Four",
                    "Car Five",
                    "Car X-12")

reprex package (v2.0.0) 于 2021-09-28 创建

会话信息
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value                       
#>  version  R version 4.0.2 (2020-06-22)
#>  os       macOS  10.16                
#>  system   x86_64, darwin17.0          
#>  ui       X11                         
#>  language (EN)                        
#>  collate  en_AU.UTF-8                 
#>  ctype    en_AU.UTF-8                 
#>  tz       Australia/Melbourne         
#>  date     2021-09-28                  
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package     * version date       lib source        
#>  backports     1.2.1   2020-12-09 [1] CRAN (R 4.0.2)
#>  cli           3.0.1   2021-07-17 [1] CRAN (R 4.0.2)
#>  crayon        1.4.1   2021-02-08 [1] CRAN (R 4.0.2)
#>  digest        0.6.28  2021-09-23 [1] CRAN (R 4.0.2)
#>  ellipsis      0.3.2   2021-04-29 [1] CRAN (R 4.0.2)
#>  evaluate      0.14    2019-05-28 [1] CRAN (R 4.0.1)
#>  fansi         0.5.0   2021-05-25 [1] CRAN (R 4.0.2)
#>  fs            1.5.0   2020-07-31 [1] CRAN (R 4.0.2)
#>  glue          1.4.2   2020-08-27 [1] CRAN (R 4.0.2)
#>  highr         0.9     2021-04-16 [1] CRAN (R 4.0.2)
#>  htmltools     0.5.1.1 2021-01-22 [1] CRAN (R 4.0.2)
#>  knitr         1.34    2021-09-09 [1] CRAN (R 4.0.2)
#>  lifecycle     1.0.0   2021-02-15 [1] CRAN (R 4.0.2)
#>  magrittr      2.0.1   2020-11-17 [1] CRAN (R 4.0.2)
#>  pillar        1.6.2   2021-07-29 [1] CRAN (R 4.0.2)
#>  pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 4.0.2)
#>  purrr         0.3.4   2020-04-17 [1] CRAN (R 4.0.2)
#>  reprex        2.0.0   2021-04-02 [1] CRAN (R 4.0.2)
#>  rlang         0.4.11  2021-04-30 [1] CRAN (R 4.0.2)
#>  rmarkdown     2.7     2021-02-19 [1] CRAN (R 4.0.2)
#>  rstudioapi    0.13    2020-11-12 [1] CRAN (R 4.0.2)
#>  sessioninfo   1.1.1   2018-11-05 [1] CRAN (R 4.0.2)
#>  stringi       1.7.4   2021-08-25 [1] CRAN (R 4.0.2)
#>  stringr       1.4.0   2019-02-10 [1] CRAN (R 4.0.2)
#>  styler        1.4.1   2021-03-30 [1] CRAN (R 4.0.2)
#>  tibble        3.1.4   2021-08-25 [1] CRAN (R 4.0.2)
#>  utf8          1.2.2   2021-07-24 [1] CRAN (R 4.0.2)
#>  vctrs         0.3.8   2021-04-29 [1] CRAN (R 4.0.2)
#>  withr         2.4.2   2021-04-18 [1] CRAN (R 4.0.2)
#>  xfun          0.26    2021-09-14 [1] CRAN (R 4.0.2)
#>  yaml          2.2.1   2020-02-01 [1] CRAN (R 4.0.2)
#> 
#> [1] /Library/Frameworks/R.framework/Versions/4.0/Resources/library

【问题讨论】:

    标签: r regex string stringr


    【解决方案1】:

    您可以使用sub 提取最后一个下划线之前的文本。

    sub('(.*)\\s+-.*', '\\1', x)
    
    #[1] "Car X-12"   "Car One"    "Car X - 12" "Car Two"   
    #[5] "Car Three"  "Car Four"   "Car Five"   "Car X-12" 
    

    【讨论】:

      【解决方案2】:

      如果颜色总是最后出现,试试这种方式怎么样?

      sapply(x, function(t){
        y <- str_split(t, " - ", simplify = TRUE)
        paste(y[-length(y)], collapse = "-")
      })
      
       Car X-12 - Red               Car One - Blue Car X - 12 - Black and Green             Car Two - Yellow 
                        "Car X-12"                    "Car One"                   "Car X-12"                    "Car Two" 
        Car Three - Purple and Red             Car Four - Olive            Car Five - Orange   Car X-12 - Black and White 
                       "Car Three"                   "Car Four"                   "Car Five"                   "Car X-12" 
      

      【讨论】:

        猜你喜欢
        • 2012-06-28
        • 2020-07-11
        • 2012-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-08
        • 1970-01-01
        相关资源
        最近更新 更多