创建字典并用它替换R中短语中的拉丁词

创建字典并用它替换R中短语中的拉丁词,r,string,dplyr,R,String,Dplyr,与此类似的帖子 . Moody_Mudskipper的解决方案很好,但是 让我们检查一下这个短语 2049750 TESS чай солид 450mg 等等。。。 事实上,我必须 2049750 ТЕСС чай солид 450mg 但是 _我的字典 dict <- structure(list( old = structure(c(2L, 1L), .Label = c("mag", "tess"),class = "factor"), new = s

与此类似的帖子 . Moody_Mudskipper的解决方案很好,但是 让我们检查一下这个短语

2049750 TESS чай солид     450mg
等等。。。 事实上,我必须

2049750 ТЕСС чай солид     450mg
但是

_我的字典

dict <- structure(list(
  old = structure(c(2L, 1L), .Label = c("mag", "tess"),class = "factor"),
  new = structure(c(2L, 1L), .Label = c("маг", "тесс"), class = "factor")),
  .Names = c("old", "new"), class = "data.frame", row.names = c(NA, -2L))
现在我得到了输出 您可以尝试以下方法:

library(stringr)
dict2 <- setNames(toupper(as.character(dict$new)), 
                  paste0("\\b",toupper(dict$old),"\\b")) 
str_replace_all(input, dict2)
# [1] "2049750 ТЕСС чай солид     450mg"
库(stringr)
dict2你可以试试这个:

library(stringr)
dict2 <- setNames(toupper(as.character(dict$new)), 
                  paste0("\\b",toupper(dict$old),"\\b")) 
str_replace_all(input, dict2)
# [1] "2049750 ТЕСС чай солид     450mg"
库(stringr)

dict2你怎么能得到这么多的
NA
s?@AntoniosK,我有35000行,所以在使用dict之后,我有35000行,你可以使用
dput()
发布
new
old
的样本吗?@jdobres,我做到了,请检查为什么不发布你发布的示例时得到的输出?所以,想要帮助的人可以准确地复制这个问题……你怎么能得到这么多的
NA
s?@AntoniosK,我有35000行,所以在使用dict之后,我有35000行,Nac你可以使用
dput()
?@jdobres发布
new
old
的样本,我做到了,请检查为什么不发布您发布的示例时获得的输出?所以,想要帮助的人可以准确地复制问题……你能做到吗,所有超过3位数的数字都被删除了?因此,必须删除此2049750。和450必须保留:)如果它仅位于字符串的开头,请使用
gsub(“^\\d\\d\\d+?”,“”,输入)
else在存档中搜索或询问新问题;)你能做到吗,所有超过3位数的数字都被删除了?因此,必须删除此2049750。和450必须保留:)如果它仅位于字符串的开头,请使用
gsub(“^\\d\\d\\d+?”,“”,输入)
else在存档中搜索或询问新问题;)
input<-("2049750 TESS чай солид     450mg")
2049750 ТЕСС чай солид     450mg
1.Na
2.Na
...
35000 NA
library(stringr)
dict2 <- setNames(toupper(as.character(dict$new)), 
                  paste0("\\b",toupper(dict$old),"\\b")) 
str_replace_all(input, dict2)
# [1] "2049750 ТЕСС чай солид     450mg"