我想删除代码列中的字符"(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.numeric
或 as.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)