我有一个关于电动汽车的数据库,其中一列是 Electric Utility。每个公司都有很多变化,例如
PUGEON ABC, PUGEON XLS, PUGEON ARR, XIMAN RYR,XIMAN WET,XIMAN OPD.
我只想将它们全部合并为一个。
PUGEON - 3 西曼 - 3.
这就是数据的样子。
我正在使用 String R 包中的 STR Replace 和 STR Detect。我将用“Bonveille”替换(所有内容)任何带有“BONEVILLE”字样的列,但它告诉我找不到该对象。这是代码。
evpd %>%
mutate(str_replace(evpd$Electric.Utility,
str_detect(string = Electric.Utility, pattern ="BONNEVILLE"), "Bonneville"))
任何想法或替代方案?
在没有访问数据集的情况下不太确定代码中的具体错误是什么,但是在使用 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
包,它可以帮助您比较相似的字符串。否则,您可能必须遍历所有独特的类别并为它们创建编码。