区别于;Mr";以及;陈方安生女士;使用R
我用grep将“Mr”和“Mrs”替换为“Mr”和“Mrs.”,但每当我进入 gsub(“先生”、“先生”,数据$Title) 它还导致所有的“Mrs”都变成了“Mr.s”,这并不是我想要的:p gsub(“Mr\s”、“Mr.”数据$Title) 也不起作用,因为R(我想)不认识Mr后面的空间区别于;Mr";以及;陈方安生女士;使用R,r,gsub,R,Gsub,我用grep将“Mr”和“Mrs”替换为“Mr”和“Mrs.”,但每当我进入 gsub(“先生”、“先生”,数据$Title) 它还导致所有的“Mrs”都变成了“Mr.s”,这并不是我想要的:p gsub(“Mr\s”、“Mr.”数据$Title) 也不起作用,因为R(我想)不认识Mr后面的空间 提前感谢您的帮助 我认为eddi的答案更好,但这里有一种替代方法,可以得到“Mr”而不是“Mrs”: > gsub("Mr([^s])", "Mr.\\1", c("Mr fdfvgg", "Mr
提前感谢您的帮助 我认为eddi的答案更好,但这里有一种替代方法,可以得到“Mr”而不是“Mrs”:
> gsub("Mr([^s])", "Mr.\\1", c("Mr fdfvgg", "Mrs FLkm"))
[1] "Mr. fdfvgg" "Mrs FLkm"
\\b
表示单词边界。**您可以直接在R上运行循环
通过检查$Title数据的长度
如果R中的length==2=>data$Title[i],则需要转义两次,一次转义R,一次转义正则表达式
gsub('Mr\\s','Mr',data$Title)
或gsub('Mr','Mr',data$Title)
。它确实有效,但问题是我的“Mr”后面没有空格。它更像是Mrfdfvgg和MrsFLkm。[^s]
表示匹配任何不是s的字符。这并不意味着一个空间@eddi答案是一个很好的解决方案,适用于标题后没有空格的情况(如OP所需)。-1没有格式化,没有解释你循环的内容,我很确定你的意思是nchar
不是length
。
gsub("(Mrs?)", "\\1.", c("Mr Smith", "Mrs Smith"))
#[1] "Mr. Smith" "Mrs. Smith"
gsub("Mr\\b", "Mr.", c("Mr", "Mrs"))
[1] "Mr." "Mrs"