R语言分数字符串变小数

Python07

R语言分数字符串变小数,第1张

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

例如,有如下分数字符串,要把它转变为小数

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

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

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

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

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

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

其基本思想就是把百分数按照字符处理,首先将“%”与数字分离,然后再将数除以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) )>testnewdata1v1 v21 0.78 0.432 0.65 0.563 0.32 0.23>library(stringr)>testnewdata2<-data.frame(lapply(testdata, function(x) as.numeric(str_extract(x,'[0-9.]+'))/100) )>testnewdata2v1 v21 0.78 0.432 0.65 0.563 0.32 0.23 替换百分号的思想还可以用下面的代码实现>testnewdata3<-data.frame(lapply(testdata, function(x) as.numeric(gsub("\\%", "", x))/100))>testnewdata3v1 v21 0.78 0.432 0.65 0.563 0.32 0.23