繁体   English   中英

如何从R中的字符串中提取前2个单词?

[英]How to extract first 2 words from a string in R?

我需要从字符串中提取前2个单词。 如果字符串包含2个以上的单词,则应返回前2个单词,如果该字符串包含少于2个单词,则应返回该字符串。

我尝试过使用stringr包中的'word'函数,但是对于len(string)<2的情况,它没有给出所需的输出。

word(dt$var_containing_strings, 1,2, sep=" ")

示例:输入字符串:自动贷款(个人)
输出:汽车贷款

输入字符串:其他输出:其他

像这样的东西?

a <- "this is a character string"

unlist(strsplit(a, " "))[1:2]

[1] "this" "is" 

编辑:如果世界数小于2,要添加返回原始字符串的部分,可以使用简单的if-else函数:

a <- "this is a character string"

words <- unlist(strsplit(a, " "))

if (length(words) > 2) {
  words[1:2]
} else {
  a
}

您可以使用sub在基础R中使用正则表达式

sub("(\\w+\\s+\\w+).*", "\\1", "Auto Loan (Personal)")
#[1] "Auto Loan"

如果你在文本中只有一个单词,它也会起作用

sub("(\\w+\\s+\\w+).*", "\\1", "Auto")
#[1] "Auto"

说明:

这里我们提取圆括号内显示的模式,即(\\\\w+\\\\s+\\\\w+) ,这意味着:

\\\\w+一个单词后跟\\\\s+空格,后跟\\\\w+另一个单词,所以我们总共提取两个单词。 使用sub反向引用\\\\1进行提取。

如果你想使用stringr::word() ,你可以这样做:

ifelse(is.na(word(x, 1, 2)), x, word(x, 1, 2))

[1] "Auto Loan" "Others" 

样本数据:

x <- c("Auto Loan (Personal)", "Others")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM