テキスト文字列のおおよその一致を合計したり、最初に一致した文字列から情報を引き出したりするのに問題があります。
次のようなデータがあります。
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」を使用できますが、どのコンテキストで使用できるかわかりません。どんな助けでも大歓迎です!
注:以下の3つの回答は、最初に尋ねた方法で私の質問に答えますが、「AT」と「THEN」という言葉がなくてもテキストケースが異なることについては言及していません. 実際、それらのほとんどは正確には一致しません。これを元の質問に入れる必要がありました。しかし、私はまだ答えが欲しいです。
ありがとう!