我想删除代码列中的字符“(B)”,因此可以“总结”“ stock_needed”。我的数据看起来像这样。
StringBuffer
要这样。
code stock_need
(B)1234 200
(B)5678 240
1234 700
5678 200
0123 200
如何删除这些“(B)”?提前感谢
答案 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.numeric
或as.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)