在第一个大写或 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
我怎样才能提取列中第一个 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