簡體   English   中英

如何刪除 R 中數字之間的小數點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM