gpt4 book ai didi

regex - 从R中的单个字符串中提取所有数字

转载 作者:行者123 更新时间:2023-12-03 13:40:36 25 4
gpt4 key购买 nike

假设您有一个字符串:

strLine <- "The transactions (on your account) were as follows: 0 3,000 (500) 0 2.25 (1,200)"

是否有一个将数字剥离到数组/ vector 中的函数,产生以下所需的解决方案:
result <- c(0, 3000, -500, 0, 2.25, -1200)?


result[3] = -500

请注意,数字以会计形式显示,因此()之间出现负数。此外,您可以假设只有数字出现在数字首次出现的右侧。我对regexp不太满意,所以如果需要可以帮助的话,不胜感激。另外,我不想假设字符串始终相同,因此我希望在第一个数字的位置之前去除所有单词(以及任何特殊字符)。

最佳答案

library(stringr)
x <- str_extract_all(strLine,"\\(?[0-9,.]+\\)?")[[1]]
> x
[1] "0" "3,000" "(500)" "0" "2.25" "(1,200)"

将括号更改为负数:
x <- gsub("\\((.+)\\)","-\\1",x)
x
[1] "0" "3,000" "-500" "0" "2.25" "-1,200"

然后完成 as.numeric()taRifx::destring(默认情况下 destringnext version将支持负数,因此不需要 keep选项):
library(taRifx)
destring( x, keep="0-9.-")
[1] 0 3000 -500 0 2.25 -1200

要么:
as.numeric(gsub(",","",x))
[1] 0 3000 -500 0 2.25 -1200

关于regex - 从R中的单个字符串中提取所有数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12727664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com