我的数据集中包含一个包含字符串的列,
例如
"管理250,000美元的预算,利用Excel监控和比较运营费用与之前的预算,从而为公司节省10%的预算"
我想标记所有带有美元符号后跟数字的字符串。
我正在尝试像这样编码
grep("$[^0-9]", cand_emp$description, ignore.case = TRUE, perl = FALSE, value = FALSE,
fixed = FALSE, useBytes = FALSE, invert = FALSE)
看来,这不是正确的编码方式。
任何帮助高度赞赏
谢谢! PARTH
答案 0 :(得分:5)
由于美元符号是一个特殊字符,你必须通过前面这样的反斜杠来逃避它:
\$
您可以查看 documentation
基本构建块是与单个字符匹配的正则表达式。大多数字符,包括所有字母和数字,都是与自身匹配的正则表达式。具有特殊含义的任何元字符都可以通过在其前面加上反斜杠来引用。扩展正则表达式中的元字符是。 \ | ()[{^ $ * + ?,但请注意这些是否具有特殊含义取决于上下文。
更新:正如 Gregor 在评论中指出的那样,你必须逃避R中的反斜杠,所以你必须使用:
\\$
你可以:
grep("\\$[^0-9]", cand_emp$description, ignore.case = TRUE, perl = FALSE, value = FALSE,
fixed = FALSE, useBytes = FALSE, invert = FALSE)
另一方面,如果您不喜欢使用两个反斜杠,则可以使用[``]
来利用字符类:
grep("[$][^0-9]", cand_emp$description, ignore.case = TRUE, perl = FALSE, value = FALSE,
fixed = FALSE, useBytes = FALSE, invert = FALSE)
更新:我注意到您使用更新了问题我想标记所有带有美元符号后跟数字的字符串。为此,您必须从示例中删除^
,使用:
[$][0-9]+
答案 1 :(得分:0)
grep("\\$[^0-1000000000]", cand_emp$description, ignore.case = TRUE, perl = FALSE, value = FALSE,
fixed = FALSE, useBytes = FALSE, invert = FALS
E)
感谢Fede,上面的代码工作