r语言 - 如何擦除单元格中的多个字符



我想删除代码列中的字符"(B(",这样我就可以"总结"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 以获得数字/整数输出。


我们也可以使用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的第一个参数是正则表达式。

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

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

最新更新