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

如何在R中基于两个分类变量的滞后条件匹配生成哑变量

在R中生成外部招聘/内部晋升哑变量的实现方案

根据你给出的规则,核心判断逻辑为:员工当前任职若为同一家公司的连续职位变动则标记为内部晋升(0),其余情况(包括首次入职后离开、从其他公司加入、离开原公司后返回)标记为外部招聘(1)。以下是具体实现步骤:

实现代码

# 加载dplyr包(未安装则自动安装)
if (!requireNamespace("dplyr", quietly = TRUE)) {
  install.packages("dplyr")
}
library(dplyr)

# 假设你的数据框名为employee_data
employee_data <- employee_data %>%
  # 按员工分组,确保同一员工的记录按时间顺序排列
  group_by(employee_name) %>%
  arrange(date, .by_group = TRUE) %>%
  # 生成上一条、下一条记录的公司名称,用于判断连续任职状态
  mutate(
    prev_company = lag(company_name),
    next_company = lead(company_name)
  ) %>%
  # 生成outsider_dummy哑变量
  mutate(outsider_dummy = case_when(
    # 上一家公司与当前公司相同→内部晋升
    prev_company == company_name ~ 0,
    # 首次任职且后续仍在同一家公司→内部晋升
    is.na(prev_company) & next_company == company_name ~ 0,
    # 首次任职但后续离开当前公司→外部招聘
    is.na(prev_company) & next_company != company_name ~ 1,
    # 其余情况(上一家公司与当前不同)→外部招聘
    TRUE ~ 1
  )) %>%
  # 取消分组
  ungroup()

规则匹配验证

  • Morgan(始终在A公司):所有记录要么是连续同公司,要么是首次任职且后续留任,因此outsider_dummy全为0
  • Zoe(先后在B、C公司):首次任职B后离开,后续任职C与上一家公司不同,因此outsider_dummy全为1
  • John(A→A→B→A):前两条连续同公司标记为0,任职B与上一家A不同标记为1,返回A与上一家B不同标记为1,完全匹配你的描述

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:55:24