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

R语言如何根据项目关键词非随机匹配合规的第二评阅教师

R语言实现项目第二评阅人匹配

匹配规则

我们有一个存储教授负责项目信息的数据集,需要为每个项目匹配符合规则的第二评阅人,规则如下:

  • 第二评阅人的研究方向需和项目匹配:即该教授负责的项目也包含项目对应的concrete/bridges/water关键词
  • 教授不能评阅自己负责的项目
  • 同一教授可多次被选为第二评阅人

示例数据集

df <- data.frame(
  professor = c("Hellen", "Ben","Ethel", "Jim","Connor", "Juan","Lucy"), 
  project = c("Bridges with stone", "Waterways","Concrete with steel","Structure of concrete bridges","Public health and water","Masonry of bridges","3D concrete")
)

实现代码

需要提前安装加载dplyr、stringr、purrr三个依赖包:

# 加载依赖
library(dplyr)
library(stringr)
library(purrr)

# 定义三类项目关键词
keywords <- c("concrete", "bridges", "water")

# 步骤1:统计每个教授的研究方向标签(即负责过的项目包含的关键词)
prof_tags <- df %>%
  mutate(project = str_to_lower(project)) %>%
  rowwise() %>%
  mutate(tags = list(keywords[str_detect(project, keywords)])) %>%
  ungroup() %>%
  select(professor, tags) %>%
  unnest(tags) %>%
  distinct() %>%
  group_by(professor) %>%
  summarise(
    second_candidate = professor,
    prof_tags = list(unique(tags))
  ) %>%
  ungroup() %>%
  select(-professor)

# 步骤2:为每个项目匹配符合条件的第二评阅人
result <- df %>%
  # 提取当前项目的所有匹配关键词
  mutate(project_low = str_to_lower(project),
         project_tags = map(project_low, ~keywords[str_detect(.x, keywords)])) %>%
  # 关联所有教授的研究方向标签
  crossing(prof_tags) %>%
  # 过滤符合条件的评阅人:方向匹配且不是项目负责人
  rowwise() %>%
  filter(
    length(intersect(project_tags, prof_tags)) > 0,
    professor != second_candidate
  ) %>%
  ungroup() %>%
  # 每个项目随机选1名符合条件的评阅人
  group_by(professor, project) %>%
  slice_sample(n = 1) %>%
  ungroup() %>%
  # 整理输出字段
  select(professor, project, second_Marker = second_candidate)

小提示:如果需要固定匹配结果方便复现,可在运行代码前执行set.seed(123),数字可自定义。

输出格式参考

data.frame(
  professor = c("Hellen", "Ben","Ethel", "Jim","Connor", "Juan","Lucy"), 
  project = c("Bridges with stone", "Waterways","Concrete with steel","Structure of concrete bridges","Public health and water","Masonry of bridges","3D concrete"),
  second_Marker = c("Juan","Connor","Jim","Lucy","Ben","Hellen","Ethel")
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:54:03