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

在R语言中基于多变量滞后组合创建CEO集团经验哑变量

R语言实现CEO任职前集团工作经验哑变量创建

需求说明

基于包含date、employee、company、rolename、company_conglomerate字段的员工数据,生成哑变量CEO_prior_conglomerate_experience,规则如下:

  • 若当前记录为CEO职位:检查该员工在此记录日期之前是否有过company_conglomerate=1的工作经验,有则赋值1,无则赋值0
  • 非CEO记录直接赋值0

实现方案(dplyr版)

使用dplyr包按员工分组处理时间序列数据,步骤清晰易读:

  1. 加载依赖包
library(dplyr)
  1. 数据处理逻辑(假设数据框名为employee_data)
employee_data <- employee_data %>%
  # 按员工分组,确保单员工记录单独处理
  group_by(employee) %>%
  # 按日期升序排列,保证时间顺序正确
  arrange(date, .by_group = TRUE) %>%
  mutate(
    # 计算当前记录前,员工累计的集团工作经验次数(当前记录不计入)
    prior_conglomerate_count = lag(cumsum(company_conglomerate == 1), default = 0),
    # 生成目标哑变量
    CEO_prior_conglomerate_experience = case_when(
      rolename == "CEO" & prior_conglomerate_count >= 1 ~ 1,
      TRUE ~ 0
    )
  ) %>%
  # 移除临时中间变量(可选)
  select(-prior_conglomerate_count) %>%
  ungroup()

实现方案(data.table版)

如果处理大数据量,data.table的效率更高:

  1. 加载依赖包
library(data.table)
  1. 数据处理逻辑
setDT(employee_data)
# 按员工分组,按日期排序后计算累计集团经验(当前记录前)
employee_data[order(date), 
  prior_conglomerate_count := shift(cumsum(company_conglomerate == 1), fill = 0), 
  by = employee]
# 生成目标变量
employee_data[, CEO_prior_conglomerate_experience := fifelse(rolename == "CEO" & prior_conglomerate_count >= 1, 1, 0)]
# 移除临时变量
employee_data[, prior_conglomerate_count := NULL]

注意事项

  • 确保date字段为日期格式,若不是可先用employee_data$date <- as.Date(employee_data$date)转换,否则排序会出错
  • 若同一员工同一天有多条记录,需根据实际业务逻辑调整排序规则(比如增加职位优先级排序)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:50:25