数据框列向量操作

时间:2016-05-25 08:56:16

标签: regex r

我有一个数据帧mydf:

                Content    term
    1 Search Term: abc|    NA
    2 Search Term-xyz      NA
    3 Search Term-pqr|     NA

制作正则表达式:

\Search Term[:]?.?([a-zA-Z]+)\ 

获取abc xyz和pqr等条款。

如何在术语列中提取这些术语。我尝试过str_match和gsub,但没有得到正确的结果。

3 个答案:

答案 0 :(得分:2)

我们可以尝试sub

sub(".*(\\s+|-)", "", df1$Content)
#[1] "abc" "xyz" "pqr"

或者

library(stringr)
str_extract(df1$Content, "\\w+$")
#[1] "abc" "xyz" "pqr"

更新

如果在最后的字符串中也找到了|

gsub(".*(\\s+|-)|[^a-z]+$", "", df1$Content)
#[1] "abc" "xyz" "pqr"

 str_extract(df1$Content, "\\w+(?=(|[|])$)")
 #[1] "abc" "xyz" "pqr"

答案 1 :(得分:1)

只是为了展示word的{​​{1}}功能,

stringr

答案 2 :(得分:0)

'gsub'会帮助你

content <- c("Search Term: abc|", "Search Term-xyz", "Search Term-pqr|")
term <- c(NA, NA, NA)
test123 <- as.data.frame(cbind(content, term))
test123$term <- as.character(gsub(".*(\\s+|-)|[^a-z]+$", "", test123$content))
test123
            content term
1 Search Term: abc|  abc
2   Search Term-xyz  xyz
3  Search Term-pqr|  pqr