R检测和替换分类字符串

qvtsj1bj  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(132)

我有一个关于电动汽车的数据库,其中一栏是Electric Utility。
PUGEON ABC、PUGEON XLS、PUGEON ARR、XIMAN RYR、XIMAN WET、XIMAN OPD。
我想把它们合并到一个里面。
Ximan- 3.
这就是数据的样子。
Data
我正在使用String R包中的STR Replace和STR Detect。我将用“Bonveille”替换(所有内容)任何包含“BONEVILLE”的列,但它告诉我对象未找到。这是代码。

evpd %>%
      mutate(str_replace(evpd$Electric.Utility, 
                         str_detect(string = Electric.Utility, pattern ="BONNEVILLE"), "Bonneville"))

有什么想法或替代方案吗?

rxztt3cl

rxztt3cl1#

不太确定在没有访问数据集的情况下代码中的具体错误是什么,但在使用mutate时,通常不希望使用$引用列。
我喜欢使用函数ifelse(),它的工作方式类似:

library(tidyverse)
data <- 
  tibble(
    var1 = c('BONNEVILLE', 'BONNE VILLE', 'BONNEVILLE POWER')
  )
data
#> # A tibble: 3 × 1
#>   var1            
#>   <chr>           
#> 1 BONNEVILLE      
#> 2 BONNE VILLE     
#> 3 BONNEVILLE POWER

data %>% 
  mutate(var1 = ifelse(str_detect(var1, 'BONNEVILLE'), 'Bonneville', var1))
#> # A tibble: 3 × 1
#>   var1       
#>   <chr>      
#> 1 Bonneville 
#> 2 BONNE VILLE
#> 3 Bonneville

不幸的是,我发现这是一个很难解决的问题。你也可以 checkout stringdist包,它可以帮助你比较相似的字符串。否则,你可能需要遍历所有唯一的类别,并为它们创建一个编码。

相关问题