使用unique()和==来匹配带重音和不带重音的字符

9
我正在制作一些表格,它们看起来几乎相同,只是其中一些字符在某些表格中是带重音的,而在其他表格中则没有。例如,“André”有时会被写成“Andre”,“Flávio”和“Flavio”等等。我需要将所有变体视为相等,但unique()函数会将它们视为不同。我考虑过将所有带重音的字符改成不带重音的字符,然后再使用unique()函数,但我想可能还有另一种更快的方法。
稍后我需要使用==进行相同的不区分重音的比较,因此我正在考虑从每个表格的副本中删除所有重音,并对副本进行比较。如果有不同的更好方法,请告诉我。

3
您的方法看起来是合适的。请注意,iconv("André",to='ASCII//TRANSLIT') == "Andre" - A. Webb
这看起来比转换每种不同的口音要好得多,@A.Webb。我会把它作为答案接受。谢谢! - Rodrigo
将带重音的字符转换为ASCII字符。 - moodymudskipper
1个回答

6

在比较之前移除重音的方法似乎适合您的需求。请注意,在iconv中有这样的功能,使用TRANSLIT标志。

iconv(c("André","Flávio"),to='ASCII//TRANSLIT')
#> [1] "Andre"  "Flavio"

是的,我制作了一个同时执行此操作并将其转换为大写的函数:ICONV <- function(x) { return(iconv(toupper(x),to='ASCII//TRANSLIT')) } 谢谢! - Rodrigo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接