我有一列由“|”分隔的值组成 并生成了此代码,但它需要“|”之前的所有内容,而不是之后。请记住,此列是一个“因素”。
INV | Building One
BO | Building Twenty Five
VC | Corporate
sub("([A-Za-z]+).*", "\\1"
Run Code Online (Sandbox Code Playgroud)
如何删除“|”之前的第一部分 并在 R 中使用“sub”仅保留所有内容?
预期输出:
Building One
Building Twenty Five
Corporate
Run Code Online (Sandbox Code Playgroud)
您正在寻找的正则表达式是".*?\\|".
. 匹配所有字符* 零次或多次?让*“懒惰”\\|匹配“|” 这也是一个正则表达式,所以它必须被转义测试:
df <- data.frame(col1 = c("INV | Building One",
"BO | Building Twenty Five",
"VC | Corporate"))
sub(".*?\\|", "", df$col1)
#> [1] " Building One" " Building Twenty Five" " Corporate"
Run Code Online (Sandbox Code Playgroud)
这是我用于此类内容的出色正则表达式备忘单:https : //rstudio.com/wp-content/uploads/2016/09/RegExCheatsheet.pdf
顺便说一句:tidyr带有一个很好的小功能,可以在这里提供帮助:
library(tidyr)
df %>%
separate(col1, into = c("col1", "col2"), sep = "\\|")
#> col1 col2
#> 1 INV Building One
#> 2 BO Building Twenty Five
#> 3 VC Corporate
Run Code Online (Sandbox Code Playgroud)
它将您的一列分成两列,这在这里似乎是合理的。
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |