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

基于R语言实现人员流失(dropout)检测的脚本开发需求

R脚本:人员流失(Dropout)检测实现

需求说明

基于年度参与数据开发R脚本,计算人员的n_dropout(首次参与后出现的缺失次数),并据此标记是否为流失人员。

原始数据集

library(data.table)
datos <- data.frame(
  name = c("LAVAYEN LAVAYEN JOSE ANTONIO", "LAVAYEN LAVAYEN JHON JAIRO", 
              "LEON LEON LUIS ALEJANDRO", "LIMA MARTINEZ AURORA YSABELL", 
              "MONTALVAN MEJIA JOSE NICOLAS", "RODRIGUEZ ROMERO DIGNA LISSETH", 
              "ULCUANGO CONLAGO PEDRO DAVID"),
  Id = c("aa", "bb", "cc", "dd", "ee", "ff", "gg"),
  `2017` = c(1, NA, 1, NA, NA, 1, NA),
  `2018` = c(1, NA, 1, NA, 1, NA, 1),
  `2019` = c(NA, 1, NA, NA, 1, 1, 1),
  `2020` = c(NA, 1, NA, NA, NA, NA, NA),
  `2021` = c(NA, 1, NA, NA, 1, 1, 1),
  `2022` = c(NA, 1, NA, NA, 1, NA, NA),
  `2023` = c(NA, 1, NA, 1, 1, 1, 1),
  stringsAsFactors = FALSE
) %>% as.data.table()

修正后的实现代码

原参考脚本存在列名匹配错误(.SDcols误写为X2017),以下是修正并补充流失标记的完整代码:

# 计算首次参与后缺失次数的辅助函数
helper <- function(x) {
  # 定位第一个非NA值的位置(首次参与年份)
  i <- Position(\(x) !is.na(x), x)
  # 若从未参与,返回0
  if (is.na(i)) return(0L)
  # 统计首次参与后到末尾的缺失次数
  sum(is.na(x[i:length(x)]))
}

# 按人员分组计算n_dropout
datos[, n_dropout := helper(unlist(.SD)), .SDcols = `2017`:`2023`, by = .(name, Id)]

# 添加流失标记:n_dropout>0则判定为流失人员
datos[, is_dropout := ifelse(n_dropout > 0, "是", "否")]

# 查看结果
datos

核心逻辑说明

  • helper函数:先找到人员首次参与的年份,再统计该年份之后所有年度的缺失次数,即n_dropout
  • 流失判定规则:当n_dropout > 0时,标记为流失人员
  • 分组计算:按name和Id分组,确保每个人员的计算独立

示例输出

运行代码后,输出将包含n_dropout和is_dropout列,示例如下:

name Id 2017 2018 2019 2020 2021 2022 2023 n_dropout is_dropout
                           <char> <char> <num> <num> <num> <num> <num> <num> <num>     <int> <char>
1:   LAVAYEN LAVAYEN JOSE ANTONIO aa    1    1   NA   NA   NA   NA   NA         4         是
2:     LAVAYEN LAVAYEN JHON JAIRO bb   NA   NA    1    1    1    1    1         0         否
3:       LEON LEON LUIS ALEJANDRO cc    1    1   NA   NA   NA   NA   NA         4         是
4:   LIMA MARTINEZ AURORA YSABELL dd   NA   NA   NA   NA   NA   NA    1         0         否
5:   MONTALVAN MEJIA JOSE NICOLAS ee   NA    1    1   NA    1    1    1         1         是
6: RODRIGUEZ ROMERO DIGNA LISSETH ff    1   NA    1   NA    1   NA    1         3         是
7:   ULCUANGO CONLAGO PEDRO DAVID gg   NA    1    1   NA    1   NA    1         2         是

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:43:14