需要替换数据框中的字符

时间:2017-05-30 22:21:00

标签: r rstudio

我有一个数据框,我需要在R Studio中可视化,并且对于两列信息(显示原点和目的地的名称),一些字符是这样的:

St.P<U+00BA>lten

对于像

这样的不同词语会发生这种情况
W<U+00BA>rgl, V<U+00BA>cklabruck

这只发生在数据框的那两列

如何删除这些字母或替换它们?我觉得需要搜索那些特定的字符串

<U+00BA>

在两列中,并在找到它们时替换它们,你们知道一些代码可以帮助我实现这个目标吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果我将问题中的文字视为字符串的文字内容,我可以使用以下方法将它们变回Unicode字符:

library(stringr)
x = c("W<U+00BA>rgl", "V<U+00BA>cklabruck")
unicode_chars = str_match(x, "<U\\+([a-zA-Z0-9]+)>")
str_replace(x, "<U\\+[a-zA-Z0-9]+>", paste0("\\u", unicode_chars[, 2]))
# Output:
[1] "Wºrgl"       "Vºcklabruck"

但也许你的字符串已经存储为Unicode,这是系统显示它们的问题,在这种情况下这无济于事。

答案 1 :(得分:0)

我猜你用R以外的其他程序向我们展示了显示器。如果你在R控制台上查看?Syntax,你会看到在转义后使用Unicode字符,例如"\u00BA"。该字符实际上并不是一个可变的小写字母o,但也许该数据源的作者使用的是不同的字符集。因此,您可以将Vöcklabruck"的奇怪拼写与此正则表达式逻辑测试相匹配

 grepl( "V\\u00BAcklabruck" , R_reference_to_your_column)

对于您提到的所有示例,这应该是TRUE

源代码中的“真实”小写umlaut-o是R的符号“\ u00E4”,所以我怀疑你真的想要这样做:

  your_dfrm$yourcol <- gsub( "\\u00BA", "\u00E4", your_dfrm$yourcol)

这些天的大多数系统都设置为显示“变形字符”,即带有元音的分音符。