使用stringr

时间:2016-10-19 22:42:24

标签: r regex stringr tidyverse

我的数据如下:

df <- tribble(
    ~name, ~value,
    "Jake Lake MLP", 10, 
    "Bay May CE", 5,
    "Drake Cake Jr. DSF", 9.1,
    "Sam Ram IR QQQZ", 1
)

我想修剪所有名称,以便它们是:

"Jake Lake",
"Bay May", 
"Drake Cake Jr.",
"Sam Ram IR"

基本上删除最后一个空格后的所有内容。

我试过了:

df %>% mutate(name = str_replace(name, "\\s.*$", ""))

但这不是我想要的!

1 个答案:

答案 0 :(得分:4)

我们可以使用sub

df %>% 
    mutate(name = sub("\\s+[^ ]+$", "", name))

str_replace

中的相同模式
df %>% 
   mutate(name = str_replace(name, "\\s[^ ]+$", ""))
# A tibble: 4 × 2
#            name value
#           <chr> <dbl>
#1      Jake Lake  10.0
#2        Bay May   5.0
#3 Drake Cake Jr.   9.1
#4     Sam Ram IR   1.0

模式表示一个空格(\\s),后跟一个或多个非空格(否则它可以\\S+),直到字符串结尾,并将其替换为空白""。在OP的代码中,它是非特定的(.*)。