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

R语言统计多列唯一值 生成学生转学次数新列咨询

实现方案

方案1:Base R 实现

直接逐行统计4个时段学校ID的唯一值数量减1,完全匹配你之前单学生的计算逻辑:

# df为你的原始数据集
df$transfer_count <- apply(
  df[, c("school_ID_1", "school_ID_2", "school_ID_3", "school_ID_4")],
  1,
  function(x) length(unique(x)) - 1
)

方案2:dplyr 实现

适合习惯tidyverse语法的场景,1万行的数据集运行效率无压力:

library(dplyr)
df <- df %>%
  rowwise() %>%
  mutate(
    transfer_count = n_distinct(c(school_ID_1, school_ID_2, school_ID_3, school_ID_4)) - 1
  ) %>%
  ungroup()

基于已有哑变量的快速实现

如果你已经生成了相邻时段转学的0/1哑变量(共3个对应4个时段的节点),直接对哑变量列逐行求和即可:

# 示例中假设哑变量列名均以transfer开头,可根据你的实际列名调整筛选规则
df$transfer_count <- rowSums(df[, grepl("^transfer", colnames(df))], na.rm = TRUE)

注意事项

  • 若学校ID存在空值,可在unique()或n_distinct()中添加na.rm = TRUE参数过滤缺失值,避免计数偏差
  • 计算结果为0代表4个时段均在同一学校就读,无转学记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:36:02