某些列值的乘法 R

Multiplication of certain column values R

我在数据集中有一列如下所示:

我的目标是访问它并自动转换具有 *1000 或 *1000000000 的单元格并进行计算,例如 -5.5 * 1000000000 应该是单元格上的 - 5 500 000 000 和 -4 * 1000 应该是-4000.

有人知道怎么做吗?

此致

如果保证您的字符串是 R 可以逐字计算的有效表达式,您可以使用

eval(parse(text = '-5*1000'))

这会将字符串解析为等效的 R 代码,然后使用 eval 执行它。在这种情况下,它会导致 -5000 的数值结果。

小心行事。 More background on using eval(parse) can be found here

这可以通过首先对 * 进行拆分操作,然后使用基于 purrr 的函数 map_dbl 的映射操作来执行计算来完成:

library(purrr)                                   
library(dplyr)
df %>%
  # Step 1: split strings on `*`:
  mutate(x_new = strsplit(x,"\*")) %>%
  # Step 2: convert to numeric and perform calculation:
  mutate(x_new = ifelse(str_detect(x_new, ","), 
                        map_dbl(x_new, function(x) as.numeric(x)[1] * as.numeric(x)[2]),
                        x_new))
                 x    x_new
1 -5.50*1000000000 -5.5e+09
2              35%      35%
3       -4.00*1000    -4000

(警告信息可以忽略)

测试数据:

df <- data.frame(x = c("-5.50*1000000000", "35%", "-4.00*1000"))