R:比较两组矢量

时间:2017-08-03 09:28:00

标签: r string

我制作了两个推荐系统,并希望主持他们推荐的产品,并查看有多少产品相互。我将两个结果加入到数据框中 - 一个推荐系统列以“z”开头,另一个以“b”开头。

示例数据:

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

问题是订单可能不一样,并且所有组合的合并都是通过Case或ifelse组合的,特别是当Top-N推荐的数量将变为10时。

2 个答案:

答案 0 :(得分:2)

我们可以使用apply循环遍历数据集子集的行(删除“ID”列),获取前3个和下一个length的{​​{1}} 3个元素

intersect

答案 1 :(得分:1)

这是另一个解决方案(注意:我更改了data.frame代码以生成问题中实际显示的数据框 - 它们不匹配):

> library(dplyr)
> df %>% mutate(mutual_recommendation=apply(df,1,function(x) sum(x[1:3] %in% x[4:6]) ))
  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  r  e  y                     1