次のような製品のペアの類似性に関するデータフレームがあります。
Product1 Product2 similarity
p1 p2 0.102
p1 p3 0.221
p1 p4 0.333
.....
p2 p1 0.102
p2 p3 0.201
p2 p4 0.242
次のような各製品について、最も類似した上位 10 個の製品を選択したいと考えています。
product.pairs<-ddply(product.pairs, "product1", transform, rank = seq_along(product1))
product.pairs<-subset(product.pairs, rank<11,select=c(product1,product2))
これはデータセットが小さい場合は機能しましたが、製品番号が 30k に達すると遅すぎます...
また、次のようなランクとパーティションを模倣するために、sqldfを試しました...
sql_top10<-" a.product1、a.product2、a.similarity、count(*) を productpairs a からのランクとして選択 a.product1=b.product1 および a.similarity>=b.similarity グループの a.productpairs b を a. product1,a.simlarity"
しかし、これはさらに悪いことです...何か提案はありますか?