在第一个大写或 space 之后提取文本

Extract text after first upper case or space

我怎样才能提取列中第一个 space 之后的所有文本,其中数据是这样的

structure(list(value = c("1.1.a Blue sea", "1.2.a Red ball")), row.names = c(NA, -2L), class =c("tbl_df", "tbl", "data.frame"))

所以我得到了一个新专栏

Blue sea
Red ball

您可以使用包 stringr 中的 str_extract 来提取任何以大写字母 ([[:upper:]]) 开头后跟一个或多个字符 (.+ ) 直到字符串结尾 ($).

library(stringr)

str_extract(df$value, "[[:upper:]].+$")

如果你不想使用正则表达式,你可以使用 str_split 将字符串分成两部分,空 space.

str_split(df$value, " ", n = 2, simplify = T)[,2]

输出

以上两种方法输出结果相同:

[1] "Blue sea" "Red ball"

您可以使用下面的代码select所有文字后第一个白色space:

sub("^\S+\s+", '', df$value)

输出:

[1] "Blue sea" "Red ball"

您可以使用它来创建一个新列:

library(dplyr)
df %>%
  mutate(new_value = sub("^\S+\s+", '', value))

输出:

# A tibble: 2 × 2
  value          new_value
  <chr>          <chr>    
1 1.1.a Blue sea Blue sea 
2 1.2.a Red ball Red ball