R:删除'$'符号

时间:2013-02-05 03:35:51

标签: regex r

我从网络服务器下载了一些数据,包括为人类格式化的价格,包括$和千位分隔符。

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

我能够使用

删除逗号
m <- sub(',','',m)

但是

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

不会删除美元符号。如果我尝试mn <- as.numeric(m)或as.integer,我会收到一条错误消息:

  

警告讯息:强制引入的NAs

结果是:

> head(m)
[1] NA NA NA NA NA NA

如何删除$符号?感谢

3 个答案:

答案 0 :(得分:7)

 dat <- gsub('[$]','',dat)
 dat <- as.numeric(gsub(',','',dat))
 > dat
 [1] 129900 139900 254000 260000 290000 295000

一步到位

 gsub('[$]([0-9]+)[,]([0-9]+)','\\1\\2',dat)
[1] "129900" "139900" "254000" "260000" "290000" "295000"

答案 1 :(得分:6)

试试这个。这意味着用空字符串替换任何不是数字的东西:

as.numeric(gsub("\\D", "", dat))

或删除既不是数字也不是小数的任何内容:

as.numeric(gsub("[^0-9.]", "", dat))

更新:如果问题中的数据不具代表性,则添加第二种类似方法。

答案 2 :(得分:3)

你也可以使用:

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

如果你想继续使用gsub的fixed = TRUE参数:

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