如何解决在R中:在列中搜索不同的字符串模式并替换所有字符串模式
我有一列包含不同的游戏标题。为了收集它们,我必须将它们全部更改为单个拼写。 例如,我有:
str_replace_all(FavouriteGames_DF$FavGame1,pattern = c("SKYRIM|
THE ELDER SCROLLS V: SKYRIM|
ELDER SCROLLS SKYRIM|
ELDER SCROLLS V SKYRIM|
SKYRIM (BETHESDA 2011)|
SKYRIM (MODDED)|
THE ELDERSCROLLS V: SKYRIM"),replacement = "THE ELDER SCROLLS 5: SKYRIM")
问题是,str_replace_all对此很不好,因为它不能仅搜索任何匹配的模式并将其替换为替换,但是显然必须按顺序进行,而且我无法预测其中的位置DataSet哪个术语将到达。
我不希望该功能替换不完整的匹配项(例如,将“ ELDERSCROLLS V:SKYRIM”转到“ ELDERSCOLLS V:ELDER SCROLL 5:天际”)
将模式放入pattern = c("1","2")
中将完全无效,因为它只能按顺序检查模式。
我还尝试了DataCombine包中的FindReplace函数,但是由于我不太了解的原因(声称我缺少尺寸并且向量不是字符向量),该函数似乎也不起作用。无论如何,我想使用尽可能少的软件包,并且希望留在tidyverse中。
有人有好的解决方案吗?我不想自己搜索每个术语,因为我必须做很多事情,而且因为mutate_at did_t似乎可以与str_replace一起使用,所以我已经必须对6列进行搜索。
谢谢!
解决方法
一个方便的解决方案是仅将“ SKYRIM”用作模式,因为它是您指定的所有模式上的通用词。您可以定义一个非常简单的函数来检查该模式,然后在要检查的特定列上使用lapply
:
check <- function(x){
y <- unlist(strsplit(x," "))
if("SKYRIM" %in% y)
return("THE ELDER SCROLLS 5: SKYRIM")
else
return(x)
}
FavouriteGames_DF["FavGame1"] <- lapply(FavouriteGames_DF["FavGame1"],check)
,
我的评论为答案:
FavouriteGames_DF[FavouriteGames_Df$FavGame1 %in% pattern,]$FavGame1 <- replacement
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。