我有興趣從字符串中的一美元金額中刪除所有逗號,但最後一個逗號(如果有)。例如,可以說我有如何刪除除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