R:在字符串中将小数转换为十进制

时间:2019-06-01 15:15:23

标签: r gsub

我想将字符串中的某些小数字符转换为十进制格式,但保留其余字符串的上下文,以便:

enter image description here

成为:

enter image description here

answer与我要执行的操作类似,但是当调整为用例时,它不会保留字符串的其余部分,并且在用于数据时似乎完全崩溃了框架。

library(gsubfn)

calc <- function(s) {
  x <- c(if (length(s) == 2) 0, as.numeric(s), 0:1)
  x[1] + x[2] / x[3]
}

ff <- c('1 1/2', '2 3/4', '2/3', '11 1/4', '5/4')
sapply(strapplyc(ff, "\\d+"), calc)
#1.5000000  2.7500000  0.6666667 11.2500000  1.2500000

ef = c('1 1/2" ant', '2 3/4" apple', '2/3" berry', '11" 1/4 plum', '5/4" orange')
sapply(strapplyc(ef, "\\d+"), calc)
#1.5000000  2.7500000  0.6666667 11.2500000  1.2500000

df <- as.data.frame(ef)
sapply(strapplyc(df$ef, "\\d+"), calc)
#2 3 4 1 5

1 个答案:

答案 0 :(得分:1)

选项为gsubfn

gsubfn("(\\d+) (\\d+)", ~ as.numeric(x) + as.numeric(y), 
     gsubfn("(\\d+)/(\\d+)", ~ as.numeric(x)/as.numeric(y), ef))