在R中对某个字符后捕获的数字进行数学运算

3

我有一个向量,其中的元素如下所示:

x <- c("3434/1233", "3434.332/232.2", "220.23/932.89", "908.11111/9")

我希望将斜杠后面的数字替换为它们的值乘以60

因此,得到的向量将是:

x.times.sixty <- c("3434/73980", "3434.332/13932", "220.23/55973.4", "908.11111/540")

我该怎么做呢?

我尝试了以下方法,但都不起作用:

gsub(x = x, pattern = "/(.*)", replacement = as.numeric('\\1' * 60))

此外还有这个:
gsub(x = x, pattern = "/(.*)", replacement = '\\1 * 60')

BTW, 9*60 = 540 - akrun
1个回答

1
我们可以使用gsubfn进行乘法运算。捕获字符串末尾包括小数点的数字(([0-9.]+$)),将其转换为数字并乘以60。
library(gsubfn)
gsubfn("([0-9.]+$)", ~ as.numeric(x)*60, x)
#[1] "3434/73980"     "3434.332/13932" "220.23/55973.4" "908.11111/540" 

或者正确遵循条件。
gsubfn("\\/([0-9.]+$)", ~ paste0("/", as.numeric(x)*60), x)
#[1] "3434/73980"     "3434.332/13932" "220.23/55973.4" "908.11111/540" 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接