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

任务一:利用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]

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容