我从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)
如何删除$符号?谢谢
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)
试试这个.这意味着用空字符串替换任何不是数字的东西:
as.numeric(gsub("\\D", "", dat))
Run Code Online (Sandbox Code Playgroud)
或删除任何既不是数字也不是小数的东西:
as.numeric(gsub("[^0-9.]", "", dat))
Run Code Online (Sandbox Code Playgroud)
更新:如果问题中的数据不具代表性,则添加第二种类似方法.