[英]how to remove decimal point between numbers in R
我正在嘗試刪除 R 中十進制數字中的小數點。 請注意,我想保留字符串的句號。
例子:
data= c("It's 6.00pm, and is late.")
我知道我必須為此使用正則表達式,但我很掙扎。 我想要的 output 是:
"It's 6 00pm, and is late."
先感謝您。
嘗試這個:
sub("(?<=\\d)\\.(?=\\d)", " ", data, perl = TRUE)
此解決方案使用后視(?<=...)
和前瞻(?=...)
斷言您希望刪除的句點由數字包圍(從而避免匹配句d
點)。 如果字符串中有多個此類情況,請使用gsub
而不是sub
。
我建議使用簡單的模式來查找目標文本,然后添加括號來標識要保留的匹配文本部分。
# Test data
data <- c("It's 6.00pm, and is late.")
目標模式是一個文字點,前后有一串數字。 \\d+
匹配一個或多個數字和\\.
匹配文字點。 測試模式以查看它是否有效:
grepl("\\d+\\.\\d+", data)
結果
TRUE
如果我們也想消除整個事情,我們可以用一個空字符串做一個簡單的替換。 測試這是否針對正確的文本:
sub("\\d+\\.\\d+", "", data)
結果
"It's pm, and is late."
相反,為了只丟棄一部分匹配的文本,我們可以識別我們想要保留的部分,這是通過用括號括起來來完成的。 完成后,我們可以在替換中引用捕獲的文本。 \\1
指的是捕獲的第一個文本塊, \\2
指的是第二個文本塊,對應於第一組和第二組括號
# pattern replacement
sub("(\\d+)\\.(\\d+)", "\\1\\2", data)
結果
[1] "It's 600pm, and is late."
這通過從替換文本中省略它來有效地刪除點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.