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