Regex R:卸下'$';象征

Regex R:卸下'$';象征,regex,r,Regex,R,我从web服务器下载了一些数据,包括为人类格式化的价格,包括$1000分隔符 > head(m) [1] $129,900 $139,900 $254,000 $260,000 $290,000 $295,000 我可以用 m <- sub(',','',m) 如何删除$sign?谢谢,试试这个。这意味着用空字符串替换任何非数字的内容: dat <- gsub('[$]','',dat) dat <- as.numeric(gsub(',','',dat)) &

我从web服务器下载了一些数据,包括为人类格式化的价格,包括$1000分隔符

> head(m)
[1] $129,900 $139,900 $254,000 $260,000 $290,000 $295,000
我可以用

m <- sub(',','',m)

如何删除$sign?谢谢,试试这个。这意味着用空字符串替换任何非数字的内容:

 dat <- gsub('[$]','',dat)
 dat <- as.numeric(gsub(',','',dat))
 > dat
 [1] 129900 139900 254000 260000 290000 295000
as.numeric(gsub("\\D", "", dat))
或删除既不是数字也不是小数的任何内容:

as.numeric(gsub("[^0-9.]", "", dat))
更新:添加了第二种类似方法,以防问题中的数据不具有代表性。

您也可以使用:

x <- c("$129,900", "$139,900", "$254,000", "$260,000", "$290,000", "$295,000")

library(qdap)
as.numeric(mgsub(c("$", ","), "", x))
如果您想保持基本状态,请使用gsub的
fixed=TRUE
参数:

x <- c("$129,900", "$139,900", "$254,000", "$260,000", "$290,000", "$295,000")
as.numeric(gsub("$", "", gsub(",", "", x), fixed = TRUE))

x是的,很好用,谢谢
m使用
gsub(“[$,]”,“,”,dat)
,因为正则表达式应该一步完成,谢谢Dason,这更简单@戴森:对!我的现在看起来很难看:(作为另一个选项,还有一个
固定的
参数,它允许您关闭
$
的正则表达式解释。但是如果您的数字中有小数,请小心,因为这将删除小数点。
as.numeric(gsub("[^0-9.]", "", dat))
x <- c("$129,900", "$139,900", "$254,000", "$260,000", "$290,000", "$295,000")

library(qdap)
as.numeric(mgsub(c("$", ","), "", x))
> as.numeric(mgsub(c("$", ","), "", x))
[1] 129900 139900 254000 260000 290000 295000
x <- c("$129,900", "$139,900", "$254,000", "$260,000", "$290,000", "$295,000")
as.numeric(gsub("$", "", gsub(",", "", x), fixed = TRUE))