如何在R中去除数据中的美元符号($) / 转义特殊字符?

27
我一直在使用gsub("要替换的内容","替换成的内容", myvector)来清除 R 中的数据。虽然这对逗号等符号有效,但是删除"$"没有任何效果。所以,如果我执行gsub("$","",myvector),所有美元符号仍然保持不变。
我认为这是因为$在R中是特殊字符。我尝试转义它"\$",但结果相同(无效)。我找不到有关在 R 中转义特殊字符的资源。
显然,我应该在预处理中完成这项任务。但我想知道是否有人知道如何a)在R中转义特殊字符,或b)直接消除顽固的$。为了科学研究。
4个回答

30

你需要对它进行两次转义,首先是为了R,第二次是为了正则表达式。

gsub('\\$', '', c("a$a", "bb$"))
[1] "aa" "bb"

请参见?Quotes,了解有关引用和转义的详细信息。


21

使用 fixed = TRUE

gsub('$', '', c("a$a", "bb$"), fixed = TRUE)

那么您就不需要担心任何特殊字符了。在stringr中,这个实现略有不同:

library(stringr)
str_replace_all(c("$100","ta$ty"), fixed("$"), "")

感谢DiggyF和James的示例!


14

转义字符有时可能会很麻烦,但只需将其放入方括号中(将其变成字符类)即可解决此问题:

> gsub("[$]","",c("$100","ta$ty"))
[1] "100"  "taty"

1
如果你的数据列中有以 $ 开头的数字(例如 $400,000),有一个更简单的方法可以帮助你。将以下代码添加到你的 R 语言脚本中: data%>% mutate_at(5:6, parse_number) 其中 5:6 是数据列的编号。

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