R语言中千分位分隔符数值(美式数值)读取

千分位分割数值

对于英美数值数据,千分位分隔符(逗号分割)很常见,如下面一份房地产销售数据,land.squre.feet, gross.square.feet两列数据。

在这里插入图片描述

R不能自动识别千分位分割数值

虽然在Excel里面,千分位分隔符数值和普通数值没什么区别,也可以通知设置单元格格式进行转化,但是在R中却有大的区别,即千分位分隔符并不是数值,不能直接做数值计算。

>mean(land.squre.feet)
[1] NA
Warning message:
In mean.default(land.squre.feet) : 参数不是数值也不是逻辑值:回覆NA

直接使用as.numeric函数将land.squre.feet转华为R可以识别的数值也不行

>mean(as.numeric(bk$land.squre.feet))
[1] NaN

R中识别千分位分割数值的方法

使用gsub()函数,gsub()可以用于字段的删减、增补、替换和切割,可以处理一个字段也可以处理由字段组成的向量。

具体的使用方法为:gsub(“目标字符”, “替换字符”, 对象)

在gsub函数中,任何字段处理都由将“替换字符”替换到“目标字符”这一流程中实现,令替换字符为’’’'可实现删除,令替换字符为"目标字符+增补内容"可实现增补,替换和切割也是使用类似的操作。

例如:

> text <- "AbcdEfgh . Ijkl MNM"

> gsub("Efg", "AAA", text)     #  将Efg改为AAA,区分大小写

[1] "AbcdAAAh . Ijkl MNM"

在这里也就是要将千分位分隔符“,”去掉,可以使用下列语句:

>land.sqft <-- as.numeric(gsub(",","",land.square.feet)) # 将“,”去除

其结果如下:

>head(bk.homes[,c(“land.square.feet”,“land.sqft”)])
land.square.feet land.sqft
26 2,058 2058
27 4,833 4833
28 2,417 2417
29 3,867 3867
31 2,707 2707
32 2,417 2417

以上语句对于具有货币符合的数值(如$203,001)处理要分两步,先去掉逗号,再去掉$,更一般的是使用以下语句可以一次完成,

land.sqft = as.numeric(gsub("[^[:digit:]]","",land.square.feet)) #[^[:digit:]]表示非数字字符

关于gsub函数的使用,可以参见这篇文章:

R语言-gsub替换字符工具:https://blog.csdn.net/lztttao/article/details/82086346

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值