2017-08-03 74 views
1

我已经提出了两个推荐系统,并希望主持他们推荐的产品和以查看有多少产品相互关联。我将两个结果加入数据框 - 一个推荐系统列以“z”开头,另一个以“b”开头。R:比较两组载体

示例数据:

df <- data.frame(z1 = c("a", "s", "d"), z2 = c("z", "x", "c"), z3 = c("q", "w", "e"), 
      b1 = c("w", "a", "e"), b2 = c("a", "i", "r"), b3 = c("z", "w", "y")) 

ID z1 z2 z3 b1 b2 b3 
1 a z q q a z 
2 s x w a i r 
3 d c e r e y 

期望的结果:

ID z1 z2 z3 b1 b2 b3 mutual_recommendation 
1 a z q q a z 3 
2 s x w a i r 0 
3 d c e e r y 1 

的问题是,顺序可能是不一样的,并compering所有组合是个案或ifelse将是一个很大的组合,特别是当Top-N推荐的数量将变为10.

回答

2

我们可以使用apply来循环遍历数据集子集的行(删除第e'ID'栏),得到前3个和后3个元素的lengthintersect

df$mutual_recommendation <- apply(df[-1], 1, FUN = function(x) 
         length(intersect(x[1:3], x[4:6]))) 
df$mutual_recommendation 
#[1] 3 0 1