如何拆分字符串末尾的数值,然后将 1.4 x 10*4 转换为 1.4E4?

How to split numerical values at the end of a string and then convert 1.4 x 10*4 to 1.4E4?

我得到了一个 excel 文件,我将使用 openxlsx 将其拉入 R 但我需要处理从数字开始拆分每个单元格的字符元素(使用正则表达式可能没问题).但是还有数字部分,实际上是 numerical/part 字符部分。 例如1.4 x 10*4 需要是 1.4E4 或 1400。任何人都可以想到清理这个的任何策略吗?请注意,我在示例 data.frame 中留下了合并的单元格,但 openxlsx 会处理这些单元格。非常感谢任何想法。

df<-data.frame(`Brilliance UTI Agar cfu/m3`=c(
0,
"Enterococcus spp 1.4 x 10*4",,

"Enterococcus spp 8.3 x 10*3",
0, ,

"Proteus 8 x 10*4",
"Enterococcus spp 1.7 x 10*3"))

您可以在此处尝试使用 gsub 作为基础 R 选项:

df$data <- gsub("\b(\d+(?:\.\d+)?)\s*x\s*10\*(\d+)\b", "\1E\2", input)
df

                    data
1                      0
2 Enterococcus spp 1.4E4
3 Enterococcus spp 8.3E3
4                      0
5            Proteus 8E4
6 Enterococcus spp 1.7E3

数据:

df <- data.frame(data=c("0",
                        "Enterococcus spp 1.4 x 10*4",
                        "Enterococcus spp 8.3 x 10*3",
                        "0",
                        "Proteus 8 x 10*4",
                        "Enterococcus spp 1.7 x 10*3"), stringsAsFactors=FALSE)