R语言分数字符串变小数

作者: leoxiaobei | 来源:发表于2020-04-15 17:47 被阅读0次

最近处理数据遇到了分数表示的字符串,希望其能变成小数,现找到如下一些解法
例如,有如下分数字符串,要把它转变为小数

options(stringsAsFactors = F)
a <- c("1/2","6/11","13/21","71/132","136/555")
a <- data.frame(name=a)

第一种方法

b <- apply(a,1,function(x) eval(parse(text=x)))

利用eval(parse())函数,不多说

第二种方法

library(stringr)
b <- as.data.frame(apply(str_split(a$name,"/",simplify = T),2,as.numeric))
b <- b[,1]/b[,2]  

利用stringr包中的字符串拆分函数str_split()将其拆分并简化

第三种方法

b <- lapply(str_split(a$name,"/"),as.numeric)
b <- sapply(b,function(x) temp=x[[1]]/x[[2]] )

同样利用str_split()函数但不简化,之后使用sapply()函数简化

第四种方法

library(DOSE)
b <- parse_ratio(a$name)

直接使用DOSE包中现成的函数

第五种方法

temp1 <- as.numeric(sub("(\\d+)/\\d+","\\1",a$name))
temp2 <- as.numeric(sub("\\d+/(\\d+)","\\1",a$name))
b <- temp1/temp2

利用sub()函数查找并保留想要的部分

第六种方法

index <- str_locate(a$name,"/")[,1]
temp1 <- as.numeric(str_sub(a$name,1,index-1))
temp2 <- as.numeric(str_sub(a$name,index+1,nchar(a$name)))
b <- temp1/temp2

利用str_locate()函数定位“\”符号,之后使用str_sub()函数进行字符串截取

相关文章

  • R语言分数字符串变小数

    最近处理数据遇到了分数表示的字符串,希望其能变成小数,现找到如下一些解法例如,有如下分数字符串,要把它转变为小数 ...

  • LeetCode 166-170

    166. 分数到小数[https://leetcode-cn.com/problems/fraction-to-r...

  • 三升四数学(7)

    七,分数化小数(续) 分子是1的分数叫单位分数 分数化小数的方法:用分子除以分母 小数分为:有限小数和无限循环小数...

  • 二 基本运算符

    01 比较运算符 了解 02 逻辑运算符 真除法、小数截断 数值类型转换 小数类型 分数类型 进制整数转换 定义变...

  • 分数到小数

    给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。 如果...

  • 166. Fraction to Recurring Decim

    给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数。如果...

  • R语言中的字符串

    R语言提供了丰富的字符串函数,这里介绍几个R语言里面常用的基本字符串处理函数,详细参数可以在R中查看帮助。 nch...

  • 怎么把小数转化成分数

    学习分数分数就是在学习小数,可是它们之间既然有关系,那么能不能把小数转化成分数呢? 首先我们先来把分数转化成小数,...

  • 分数与小数的互相转换

    对于分数与小数的互相转换,有两个主要问题,第1个:分数如何转换为小数?第2个:小数都可以转换为分数? 分数转换为小...

  • 小数和分数计算

    小数计算 分数计算

网友评论

    本文标题:R语言分数字符串变小数

    本文链接:https://www.haomeiwen.com/subject/ppqhvhtx.html