我有一个非常混乱的数据框架,其中一列的值可以理解为人类而不是计算机,有点像下面的那样.
df<-data.frame("id"=c(1:10),
"colour"=c("re d", ", red", "re-d","green", "gre, en", ", gre-en", "blu e", "green", ", blue", "bl ue"))
Run Code Online (Sandbox Code Playgroud)
我可以过滤掉df str_detect
df %>% filter(str_detect(tolower(colour), pattern = "gr"))
Run Code Online (Sandbox Code Playgroud)
但我想将所有过滤后的结果重命名为相同的值,以便我可以纠缠它.
有什么建议?
我试图用模式分开,但没有成功.
编辑:不是全部.在我正在使用的df中不需要空格.让我们说在制作df中写绿色的正确方法是"gr.een".
编辑2:
想要的结果与伪造的颜色拼写只是为了得到一个想法:
id colour
1 r. ed
2 r. ed
3 r. ed
4 gr. een
6 gr. een
7 gr. een
8 blu. e
9 gr. een
10 blu. e
Run Code Online (Sandbox Code Playgroud)
您可以使用mgsub多种模式替换多个单词:
df<-data.frame("id"=c(1:10),
"colour"=c("re d", ", red", "re-d","green", "gre, en",
", gre-en", "blu e", "green", ", blue", "bl ue"))
library(textclean)
df$colour = mgsub(df$colour,
pattern = c(".*gr.*", ".*re.*", ".*bl.*"),
replacement = c("gr. een", "r. ed", "blu. e"), fixed = F)
df
# id colour
# 1 1 r. ed
# 2 2 r. ed
# 3 3 r. ed
# 4 4 gr. een
# 5 5 gr. een
# 6 6 gr. een
# 7 7 blu. e
# 8 8 gr. een
# 9 9 blu. e
# 10 10 blu. e
Run Code Online (Sandbox Code Playgroud)