如何擦除单元格中的多个字符?
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.numeric
或 as.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)
我想删除代码栏中的字符“(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.numeric
或 as.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)