如何删除一个单元格中的几个字符?

时间:2019-07-15 06:25:25

标签: r erase

我想删除代码列中的字符“(B)”,因此可以“总结”“ stock_needed”。我的数据看起来像这样。

StringBuffer

要这样。

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

如何删除这些“(B)”?提前感谢

2 个答案:

答案 0 :(得分:5)

您的数据还有哪些其他模式?如果总是"(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)

答案 1 :(得分:1)

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

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

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

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

首先,我们用没有括号的内容替换“代码”列:

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

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

接下来,我们从中得出一个数字向量:

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