美文网首页
R-用R实现vlookup查找关键词功能(grep和grepl)

R-用R实现vlookup查找关键词功能(grep和grepl)

作者: 睿睿爱汪汪也爱喵喵 | 来源:发表于2022-08-09 17:26 被阅读0次

    任务一:利用grep函数实现优于excel的vlookup查找功能

    背景:我们已经建立了一个关键词表stand。(其中包含特定的中文关键词,均为两个字或三个字,譬如:“星期五”、“周四”)

    任务:现在有一列文本数据,我们需要找出这列数据中包含特定关键词stand的样本。(文本数据举例:“学校在星期五开了运动会“、”学校在周日举行了环湖长跑“,则根据关键词表stand,“学校在星期五开了运动会“会被筛选出来,而”学校在周日举行了环湖长跑“就不会。

    代码如下

    stand<-read.csv("E://stand.csv")#导入关键词表

    chazhao<-read.csv("E://待查找.csv")#导入要查找的文本数据

    stand$week#关键词表的存放列,一共有20个关键词

    chazhao$act#要查找的文本数据列

    a<-list(NULL)#建立一个空的列表

    length(a)<-194#将列表的长度定义为20

    for(i in 1:20){

      ccc<-as.data.frame(chazhao[grep(stand$week[i],chazhao[,1]),])

      hhh<-cbind.data.frame(ccc,

                            ddd=as.data.frame(rep(stand$week[i] , times =dim(ccc)[1], length.out = NA, each = 1)))

      a[[i]]<-hhh

    }

    vvv<-bind_rows(a)#从chazhao$act筛选出的”文本中包含关键词表stand里的关键词“的样本,并且显示了包含了哪个关键词

    任务二:利用grepl函数实现优于excel的vlookup查找功能

    texts = c("学校有颗苹果树","学校有颗桔子树","周五学校举行田径运动会")

    keys = c("苹果树","周五","田径","运动会")

    occur = matrix(nrow = length(keys), ncol = length(texts))#建立一个新的空表

    for (index in 1:length(keys)) {

      occur[index,] <- grepl(keys[index],texts)

    }

    # 给这个空表复制,更新后的occur如下 :

    #        text1      text2      text3

    # key1  True        False      False

    # key2  False      False      True

    # key3  False      False      True

    # key4  False      False      True

    # 出现过关键词的语句

    txt_occur = apply(occur,2,any)

    texts[txt_occur]

    # 每个语句都出现了哪些关键词

    keys_text1 = keys[occur[,1]] # 第一个语句出现的关键词

    keys_text2 = keys[occur[,2]] # 第二个语句出现的关键词

    keys_text3 = keys[occur[,3]] # 第三个语句出现的关键词、

    # 建立一个列表存储每一个样本中出现了哪些关键词

    keys_occur<-list()

    for (i in  1:length(texts)){

      index<-sprintf("keys_text%d",i)

      keys_occur[[index]]<-keys[occur[,i]]#注意:这里是keys_occur[[index]],不能写成keys_occur[index]

    }

    相关文章

      网友评论

          本文标题:R-用R实现vlookup查找关键词功能(grep和grepl)

          本文链接:https://www.haomeiwen.com/subject/nceawrtx.html