You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中结合偏好排名与绩效进行项目分配

R语言实现基于偏好排名与绩效的项目分配逻辑

核心分配规则

  • 按偏好排名从高到低(1为最高优先级)逐层处理项目分配
  • 对每个偏好层级中的项目,仅考虑未被分配的人员和未被占用的项目
  • 同一项目的竞争人员中,绩效分数最高的获得该项目
  • 已分配的人员和项目不再参与后续分配流程

示例数据构造

先构造符合需求的人员偏好和绩效数据:

library(dplyr)

# 人员-项目偏好表:每行代表一个人员的某一项偏好,preference_rank为优先级(1最高)
preferences <- tibble(
  employee = c("Anna", "Anna", "Anna", "Billy", "Billy", "Billy", "James", "James", "James"),
  project = c("A", "B", "C", "A", "B", "D", "A", "B", "E"),
  preference_rank = c(1, 2, 3, 1, 2, 3, 1, 2, 3)
)

# 人员绩效分数表
performance <- tibble(
  employee = c("Anna", "Billy", "James"),
  score = c(95, 88, 82)
)

分配逻辑实现代码

# 合并偏好与绩效数据,方便后续处理
all_data <- preferences %>%
  left_join(performance, by = "employee")

# 初始化空的分配结果表
assigned <- tibble(employee = character(), project = character())

# 获取所有偏好层级(按优先级从高到低排序)
rank_levels <- sort(unique(all_data$preference_rank))

# 逐层处理偏好分配
for (rank in rank_levels) {
  # 筛选当前层级的有效候选:未分配人员 + 未被占用的项目
  current_candidates <- all_data %>%
    filter(preference_rank == rank,
           !employee %in% assigned$employee,
           !project %in% assigned$project)
  
  # 若无有效候选,跳过当前层级
  if (nrow(current_candidates) == 0) next
  
  # 按项目分组,每组取绩效最高的人员分配该项目
  current_assignments <- current_candidates %>%
    group_by(project) %>%
    arrange(desc(score)) %>%
    slice(1) %>%  # 取绩效最高的第一个
    ungroup() %>%
    select(employee, project)
  
  # 将本次分配结果加入总列表
  assigned <- bind_rows(assigned, current_assignments)
  
  # 若所有人员已分配,提前终止循环
  if (nrow(assigned) == length(unique(all_data$employee))) break
}

# 查看最终分配结果
print(assigned)

代码运行结果

# A tibble: 3 × 2
  employee project
  <chr>    <chr>  
1 Anna     A      
2 Billy    B      
3 James    E      

适配扩展说明

  • 该代码支持任意数量的人员和项目:只需更新preferences和performance数据集即可
  • 若项目数量少于人员数量,未分配到项目的人员会留在候选池外,可根据需求补充后续逻辑(如分配备选项目)
  • 若同一项目有多名绩效分数相同的人员,代码会取排序后的第一个,可通过调整arrange的额外字段(如入职时间)来细化规则

内容的提问来源于stack exchange,提问作者adkane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:34:56