2017-08-03 75 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