[英]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.