创建一个包含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字符串的新列的主要内容,如果未能解决你的问题,请参考以下文章

PySpark 在创建包含现有列名的新列时读取多个文件

SQL/PySpark:创建一个包含过去 n 天的行数的新列

过滤 pyspark 数据框中的行并创建一个包含结果的新列

Redshift 创建一个带有静态字符串错误的新列

如何添加带有预测的新列?

如何检查一系列字符串是不是包含在 PANDAS DataFrame 列中并将该字符串分配为行中的新列?