我正在尝试建立一个推荐器,根据人们的技能为特定活动推荐合适的人。 为此,我首先构建了一个推荐引擎,该引擎根据历史数据(从事这些活动的人员所拥有的技能)为每个活动提供技能推荐。 现在,诀窍是将这些对象与特定的人联系起来。
我不太确定最聪明的方法,但是最简单的方法是寻找特定活动的推荐技能,并与拥有至少50%的员工相匹配技能。
我的数据集如下:
Region ActivityID Recommended_Skills PersonID Skills_Person
France 123 Python ABC R
France 123 PowerPoint ABC Mikado
France 123 R ABC Python
France 123 Word ABC Photoshop
France 123 Python XYZ Finance
France 123 PowerPoint XYZ Powerpoint
France 123 R XYZ Law
France 123 Word XYZ Analytics
Spain 789 JavaScript DEF PowerPoint
Spain 789 PowerPoint DEF Word
Spain 789 UI DEF R
Spain 789 Office DEF Finance
Spain 789 Python CVB JavaScript
Spain 789 PowerPoint CVB Office
基本上,在这种情况下,我期望的数据帧应如下所示:
Region ActivityID PersonID
France 123 ABC
Spain 789 CVB
实际上,在这种情况下,不建议将DEF用于活动123,因为需要有一个group_by“ Region”。另外,在这种情况下,每个ActivityID仅建议一个人,但通常应该更多。
我希望这已经足够清楚了;任何帮助将不胜感激。
谢谢, 艾伦
答案 0 :(得分:0)
一种tidyverse
的方式
library(tidyverse)
df %>%
group_by(Region, ActivityID) %>%
summarise(PersonID = names(which.max(map_dbl(split(Skills_Person, PersonID),
~sum(Recommended_Skills %in% .)))))
# Region ActivityID PersonID
# <chr> <chr> <chr>
#1 France 123 ABC
#2 Spain 789 CVB
我们将每个Region
和Activity
分组,然后找到一个PersonID
,该Recommended_Skills
与ActivityID
的匹配程度最高。