如何擦除单元格中的多个字符?

how to erase several characters in a cell?

我想删除代码栏中的字符“(B)”,这样我就可以"summarise" 'stock_needed'。我的数据是这样的。

  code   stock_need 
(B)1234    200          
(B)5678    240      
1234       700          
5678       200          
0123       200          

变成这样

code   stock_need 
1234       200          
5678       240      
1234       700          
5678       200          
0123       200  

这些“(B)”是怎么擦掉的?提前致谢

您的数据还有哪些其他模式?如果它总是 "(B)" 你可以做

sub("\(B\)", "", df$code)
#[1] "1234" "5678" "1234" "5678" "0123"

或者如果它可以是任意字符则做

sub("\([A-Z]\)", "", df$code)

您也可以只从 Code

中提取数字
sub(".*?(\d+).*", "\1", df$code)

您可能希望将 sub 的输出包装在 as.numericas.integer 中以获得 numeric/integer 输出。


我们也可以用readr

readr::parse_number(df$code)

基本上,您需要做两件事:

  • 删除字符串中不需要的部分
  • 将字符串转换为数字。

说,我们加载您的数据框:

df <- read.table(header=TRUE, text="code   stock_need 
(B)1234    200          
(B)5678    240      
1234       700          
5678       200          
0123       200 ")

首先,我们将 "code" 列替换为不带括号的内容:

df$code <- gsub("\(B\)", "", df$code)

解释:为什么奇怪\?因为如果我们写 (B)gsub 会以特殊方式处理括号。括号在正则表达式中有特殊含义,gsub 的第一个参数是 regular expression.

接下来,我们用它制作一个数字向量:

df$code <- as.numeric(df$code)