我有兴趣从字符串中的一美元金额中删除所有逗号,但最后一个逗号(如果有)。例如,可以说我有如何删除除R中最后一个逗号以外的所有逗号
x <- c("$1,450", "$1,254,345,", "$2,423,123")
什么我感兴趣的是这样的:
x
## [1] "$1450" "$1254345," "$2423123"
所以,我首先要检查是否存在在最后一个逗号。如果是的话,我会删除除最后一个之外的所有内容。如果最后没有逗号,那我就把它们全部删除。
我有兴趣从字符串中的一美元金额中删除所有逗号,但最后一个逗号(如果有)。例如,可以说我有如何删除除R中最后一个逗号以外的所有逗号
x <- c("$1,450", "$1,254,345,", "$2,423,123")
什么我感兴趣的是这样的:
x
## [1] "$1450" "$1254345," "$2423123"
所以,我首先要检查是否存在在最后一个逗号。如果是的话,我会删除除最后一个之外的所有内容。如果最后没有逗号,那我就把它们全部删除。
regex
是有帮助的说明正则表达式的
gsub(",(?!$)", "", x, perl=TRUE)
# "$1450" "$1254345," "$2423123"
",(?!$)"
,
比赛所有逗号
(?!$)
负前瞻,排除位于字尾的逗号$
您可以通过将gsub()
和str_sub()
组合在ifelse()
中来实现。下面是一个例子
x1 <- c("$1,450", "$1,254,345,", "$2,423,123")
x1
library(stringr)
x2 <- ifelse(str_sub(x1, -1, nchar(x1)) == ",",
paste0(gsub(",", "", str_sub(x1, 1, nchar(x1)-1)), ","),
gsub(",", "", str_sub(x1, 1, nchar(x1))))
x2
这里有2种溶液
gsub(",(\\d)", "\\1", x)
逗号后跟数字取代有数字(捕获组)
gsub(",(?=\\d)", "", x, perl = T)
逗号必须跟要替换的数字(正向)
在这两种情况下,\\d
都可以替换d与.
,如果你想,而不是匹配任何符号,如果数字:
gsub(",(.)", "\\1", x)
gsub(",(?=.)", "", b, perl = T)
或者可能只是'gsub(“,(。)”,“\\ 1”,x)' –
@G。格洛腾迪克谢谢,编辑包括你的建议。 – missuse
你尝试过哪些正则表达式或其他策略无效? – hrbrmstr