如何利用R语言怎样处理百分数

楼主在工作时,遇到一个问题,网上析取的资料中有很多百分数,但是R读取的时候把它默认为是因子类型了,用as.numeric()函数也没有用。经过查找资料发现几个将百分数化成小数的小技巧,和大家分享一下。
其基本思想就是把百分数按照字符处理,首先将“%”与数字分离,然后再将数除以100,就可以化成小数了。下面两种方法的区别一个是将%替换成空格,一个是提取除百分号的数字。

> testdata<-data.frame(v1=c("78%", "65%", "32%"), v2=c("43%", "56%", "23%"))
> testnewdata1<-data.frame(lapply(testdata, function(x) as.numeric(sub("%", "", x))/100) )
> testnewdata1
    v1   v2
1 0.78 0.43
2 0.65 0.56
3 0.32 0.23
> library(stringr)
> testnewdata2<-data.frame(lapply(testdata, function(x) as.numeric(str_extract(x,'[0-9.]+'))/100) )
> testnewdata2
    v1   v2
1 0.78 0.43
2 0.65 0.56
3 0.32 0.23
  替换百分号的思想还可以用下面的代码实现
> testnewdata3<-data.frame(lapply(testdata, function(x) as.numeric(gsub("\\%", "", x))/100))
> testnewdata3
    v1   v2
1 0.78 0.43
2 0.65 0.56
3 0.32 0.23
  如果各位看官有好的想法,欢迎留言
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值