从字符串和数字中删除逗号

Posted

技术标签:

【中文标题】从字符串和数字中删除逗号【英文标题】:Removing commas from strings and numbers 【发布时间】:2018-02-05 03:06:57 【问题描述】:

使用R,如果是数字,如何删除逗号,如果是字母,如何用空格替换逗号?:

  Company        | Sales   |
  -------------------------
  go, go, llc    |2,550.40 |
  tires & more   |  500    |
  l-m tech       |1,000.67 |

样本数据:

data = matrix(c('go, go,llc', 'tires & more', 'l-m technology',
 formatC(2550.40, format="f", big.mark=",", digits=2), 500, 
 formatC(1000.67, format="f", big.mark=",", digits=2)), 
 nrow=3, 
 ncol=2)

预期输出:

  Company      | Sales  |
  -----------------------
  go go llc    |2550.40 |
  tires & more |  500   |
  l-m tech     |1000.67 |

我尝试过的:

data <- sapply(data, function(x)
           if (grepl("[[:punct:]]",x))
              if (grepl("[[:digit:]]",x))
                 x <- gsub(",","",x)
              
              else
                 x <- gsub(","," ",x)
              
           
        )

print(nrow(data)) # returns NULL

【问题讨论】:

是不是就像company 列总是有字母和Sales 列号一样? 不,有些公司里面有数字 【参考方案1】:

您可以使用嵌套的gsub 轻松做到这一点:

gsub(",", "", gsub("([a-zA-Z]),", "\\1 ", input)

内部模式匹配一​​个字母后跟一个逗号,并将其替换为仅该字母。外部的gsub 用空格替换所有剩余的逗号。

将其应用于您的矩阵:

    apply(data, 2, function(x) gsub(",", "", gsub("([a-zA-Z]),", "\\1 ", x)))
    #      [,1]             [,2]     
    # [1,] "go  go llc"     "2550.40"
    # [2,] "tires & more"   "500"    
    # [3,] "l-m technology" "1000.67"

【讨论】:

以上是关于从字符串和数字中删除逗号的主要内容,如果未能解决你的问题,请参考以下文章

PHP从数字字符串中删除逗号

如何使用正则表达式从字符串中删除字符串和特殊字符并仅显示不带逗号的数字?

Rails 去除除数字逗号和小数点以外的所有内容

如何从 Python itertools 输出中删除字符串引号、逗号和括号?

C#:从字符串中提取数字,然后将逗号(,)更改为点(。)

从列中删除逗号,空格和“NULL”字符串为0(零)