R:删除'$'符号

koe*_*bro 2 regex r

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

> head(m)
[1] $129,900 $139,900 $254,000 $260,000 $290,000 $295,000
Run Code Online (Sandbox Code Playgroud)

我能够摆脱使用的逗号

m <- sub(',','',m)
Run Code Online (Sandbox Code Playgroud)

m <- sub('$','',m)
Run Code Online (Sandbox Code Playgroud)

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

警告信息:强制引入的NA

结果是:

> head(m)
[1] NA NA NA NA NA NA
Run Code Online (Sandbox Code Playgroud)

如何删除$符号?谢谢

ags*_*udy 8

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

一步到位

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

  • 使用`gsub("[$,]","",dat)`作为正则表达式应该一步完成 (4认同)
  • 作为另一种选择,还有一个`fixed`参数可以让你关闭`$`的正则表达式解释. (2认同)

G. *_*eck 6

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

as.numeric(gsub("\\D", "", dat))
Run Code Online (Sandbox Code Playgroud)

或删除任何既不是数字也不是小数的东西:

as.numeric(gsub("[^0-9.]", "", dat))
Run Code Online (Sandbox Code Playgroud)

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

  • 但是如果你的数字中有小数,请注意,因为这会删除小数点. (3认同)