创建一个包含grepped字符串的新列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建一个包含grepped字符串的新列相关的知识,希望对你有一定的参考价值。
我有3500多个项目的数据框,我想在Project_Description
专栏中搜索40个关键词。如果Project_Description
包含一个或多个关键字,我想创建一个新列,并使用关键字标记项目的行。
如何创建循环遍历关键字的if语句,如果找到关键字,则用关键字标记正确的行?特别是如果Project_Description
可能包含多个关键字?
到目前为止,我已经能够提取出包含Project_Description
列中至少一个关键词的项目行。
key_words <- c("who","what","when","where","why", etc...)
dataframe_key_words <- c()
for (i in 1:length(key_words)){
dataframe_key_words <- rbind(dataframe_key_words, dataframe_original[grep(key_words[i], dataframe_original$Project_Description), ]
}
答案
你可以试试这个:
library(data.table)
library(stringi)
key_words <- c("where", "why")
pat <- paste0("(", paste0(key_words, collapse = "|"), ")")
DT <- data.table(descr = c("where is the sample data? why do you do this?",
"this doesn't have any of the keywords"))
DT[, kw := lapply(stri_match_all_regex(descr, pat), function(x) x[, 2])][]
# descr kw
# 1: where is the sample data? why do you do this? where,why
# 2: this doesn't have any of the keywords NA
以上是关于创建一个包含grepped字符串的新列的主要内容,如果未能解决你的问题,请参考以下文章