我无法对文本字符串的近似匹配求和,以及从第一次匹配的字符串中提取信息。
我有看起来像这样的数据:
text<-c("THEN it goes West","AT it falls East","it goes West", "it falls East", "AT it goes West")
date<-c(2008,2009,2003,2006,2011)
ID<-c(1,2,3,4,5)
data<-cbind(text,date,ID)
data<-as.data.frame(data)
请注意,最新的文本字符串在较早的文本字符串中添加了全大写“THEN”和“AT”。
我想要一个看起来像这样的表:
ID Sum Originaltext Originaldate
[1,] "4" "3" "it goes West" "2003"
[2,] "2" "2" "it falls East" "2006"
这包括:
与最早日期的文本对应的ID号(其他文本源自的“原始”文本)。 每个的所有近似匹配的总和。与最早日期对应的文本。并且文本的日期与最早的日期相对应。
我有数千万个案例,所以我在自动化流程时遇到了麻烦。
我运行 Windows 7,并且可以访问快速计算服务器。
想法
#order them backwards in time
data<-data[order(data$date, decreasing = TRUE),]
#find the strings with the latest date
pattern<-"AT|THEN"
k <- vector("list", length(data$text))
for (j in 1:length(data$text)){
k[[j]]<- grep(pattern,data$text[[j]], ignore.case=FALSE)
}
k<-subset(data$text, k==1)
k<-unique(k)
#this is a problem, because case nos. 1 and 5 are still in the dataset, but they derive from the same tweet.
从这里,我可以使用“agrep”,但我不确定在什么情况下。任何帮助将不胜感激!
注意:虽然下面的三个答案确实以我最初提出的方式回答了我的问题,但我没有提到即使没有“AT”和“THEN”这两个词,我的文本案例也会有所不同。事实上,它们中的大多数并不完全匹配。我应该把它放在原来的问题中。但是,我仍然希望得到一个答案。
谢谢!