1. 千分位分割数值
对于英美数值数据,千分位分隔符(逗号分割)很常见,如下面一份房地产销售数据,land.squre.feet, gross.square.feet两列数据。
2. 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
3. R中识别千分位分割数值的方法
使用gsub()函数,gsub()可以用于字段的删减、增补、替换和切割,可以处理一个字段也可以处理由字段组成的向量。
具体的使用方法为:gsub("目标字符", "替换字符", 对象)
在gsub函数中,任何字段处理都由将“替换字符”替换到“目标字符”这一流程中实现,令替换字符为''''可实现删除,令替换字符为"目标字符+增补内容"可实现增补,替换和切割也是使用类似的操作。
> text <- "AbcdEfgh . Ijkl MNM"
> gsub("Efg", "AAA", text) # 将Efg改为AAA,区分大小写
在这里也就是要将千分位分隔符“,”去掉,可以使用下列语句:
>land.sqft <-- as.numeric(gsub(",","",land.square.feet)) # 将“,”去除
> head(bk.homes[,c("land.square.feet","land.sqft")])
以上语句对于具有货币符合的数值(如$203,001)处理要分两步,先去掉逗号,再去掉$,更一般的是使用以下语句可以一次完成,
>land.sqft <-- as.numeric(gsub("[^[:digit:]]","",land.square.feet)) #[^[:digit:]]表示非数字字符
R语言-gsub替换字符工具:https://blog.csdn.net/lztttao/article/details/82086346