R 检测和替换分类字符串

问题描述 投票:0回答:1

我有一个关于电动汽车的数据库,其中一列是 Electric Utility。每个公司都有很多变化,例如

PUGEON ABC, PUGEON XLS, PUGEON ARR, XIMAN RYR,XIMAN WET,XIMAN OPD.

我只想将它们全部合并为一个。

PUGEON - 3 西曼 - 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"))

任何想法或替代方案?

r replace stringr
1个回答
0
投票

在没有访问数据集的情况下不太确定代码中的具体错误是什么,但是在使用 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

不幸的是,我发现这是一个很难解决的问题。您还可以查看

stringdist
包,它可以帮助您比较相似的字符串。否则,您可能必须遍历所有独特的类别并为它们创建编码。

© www.soinside.com 2019 - 2024. All rights reserved.