楼主: gtxing
4358 2

[问答] R中处理数据时,含有千分位分隔符的数值无法转换数据类型 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
12290 个
通用积分
1.7905
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
3341 点
帖子
52
精华
0
在线时间
207 小时
注册时间
2016-5-26
最后登录
2022-10-12

10论坛币
请问大神,R中处理数据时,含有千分位分隔符的数值无法转换数据类型,如何处理?
例如:R中读入数据时,设置colClasses = c("character"),现想将销售金额那一列转换成数值类型,提示:
> data$销售金额<-as.numeric(data$销售金额)
Warning message:
NAs introduced by coercion


经查看,销售金额那一列有千位分隔符的数据都转换失败了,被强制转换成NA值

网上找到的答案不靠谱,哪位大神有好的解决办法呀?

步骤:

1、先将逗号分隔符替换为空格

2、再将空格用正则式替换

  • > a<-"1,234.2"  
  • > b<-as.numeric(a)  
  • <span style="color:#cc0000;">Warning message:  
  • NAs introduced by coercion   
  • </span>> b<-<strong>chartr</strong>(","," ",a)  
  • > b<-<strong>gsub</strong>("[N ]","",b)  
  • > result<-as.numeric(b)  
  • > result  
  • [1] 1234.2

关键词:处理数据 数据类型 Character classes Result character result 如何
沙发
万人往LVR 在职认证  发表于 2016-6-23 20:25:56 |只看作者 |坛友微信交流群
就是这样做啊
  1. data <- c("1,234.56","1,345.67","2,345.67")
  2. as.numeric(gsub(",","",data))
复制代码
已有 1 人评分论坛币 收起 理由
jiangbeilu + 10 精彩帖子

总评分: 论坛币 + 10   查看全部评分

使用道具

藤椅
jiangbeilu 学生认证  发表于 2016-6-23 23:00:39 |只看作者 |坛友微信交流群
赞同楼上,如果你觉得用gsub不好,就先在Excel把数字格式从会计格式取消,就是变成常规格式,这样就没有千分位符了。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 17:32