【发布时间】:2013-09-10 16:40:51
【问题描述】:
我有关于一对产品的相似性的数据框,例如:
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=b.similarity 上加入 productpairs b 按 a.product1,a.simlarity 分组”
但这更糟......有什么建议吗?
【问题讨论】:
-
尝试为您的 SQL 查询添加适当的索引。在sqldf.googlecode.com 中搜索
create index。