[英]R remove part of string using gsub with wildcard
我有一個數據框,我想對值做兩件事:
我設法分別完成了這兩項工作,但是我似乎無法將兩者結合起來。
為了刪除尾隨零,我使用了:
cat <- c("A", "B", "C")
value <- c(1234.5, 1, 12.34)
df <- data.frame(cat, value)
df$value2 <- gsub("\\.00$","",df$value)
df
cat value value2
1 A 1234.50 1234.5
2 B 1.00 1
3 C 12.34 12.34
為了添加我使用的千位分隔符:
df$value2 <- format(df$value, big.mark=" ")
df
cat value value2
1 A 1234.50 1 234.50
2 B 1.00 1.00
3 C 12.34 12.34
現在,我希望將兩者結合起來,但是如果使用以下代碼來做到這一點:
df$value2 <- gsub("\\.00$","",format(df$value, big.mark=" "))
df
cat value value2
1 A 1234.50 1 234.50
2 B 1.00 1
3 C 12.34 12.34
僅在以兩個零結尾的情況下才刪除尾隨零。 我試圖添加|\\\\..*0$
以便它也以零開頭查找數字,但這會刪除小數點后的數字,這不是我想要的。
您可以使用參數drop0trailing
format(value, big.mark=" ", drop0trailing=TRUE)
# [1] "1 234.5" " 1" " 12.34"
也可以與formatC
一起使用,不同之處在於,默認情況下您不會獲得前導空格:
formatC(value, big.mark=" ", drop0trailing=TRUE)
# [1] "1 234" "1" "12.34"
或使用format
的trim
參數:
format(value, big.mark=" ", drop0trailing=TRUE, trim = TRUE)
# [1] "1 234.5" "1" "12.34"
這將起作用,但是您的數字將轉換為字符串/字符!
df$value2 <- gsub("0+$|\\.0+$","", as.character( format(df$value, big.mark=" ")))
# cat value value2
# 1 A 1234.50 1 234.5
# 2 B 1.00 1
# 3 C 12.34 12.34
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.