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

如何用dplyr检查TIMSS数据集中同班学生的教师一致性

问题描述

在TIMSS数据集中,学生嵌套于班级中,每位学生关联1至4位教师。需要找出班级内持有其他学生都未关联的教师的学生记录,要求用dplyr管道链实现。

示例数据

df <- data.frame(
    IDSTUD = c(50040201, 50040201, 50040201, 
               50040201, 50040204, 50040204, 50040204, 50040204, 50120303, 50120303, 
               50120303, 50120303, 50120304, 50120304, 50120304), 
    IDCLASS = c(500402, 500402, 
                500402, 500402, 500402, 500402, 500402, 500402, 501203, 501203, 
                501203, 501203, 501203, 501203, 501203), 
    IDTEACH = c(500402, 500403, 
                500404, 500405, 500405, 500404, 500403, 500402, 501201, 501202, 
                501205, 501203, 501203, 501205, 501202)
)

解决方案代码

library(dplyr)

unique_teachers <- df %>%
  # 按班级+教师分组,统计关联的不同学生数量
  group_by(IDCLASS, IDTEACH) %>%
  mutate(student_count = n_distinct(IDSTUD)) %>%
  ungroup() %>%
  # 筛选出仅被单个学生关联的教师记录
  filter(student_count == 1) %>%
  # 保留目标列
  select(IDSTUD, IDCLASS, IDTEACH)

代码逻辑说明

  • group_by(IDCLASS, IDTEACH):以班级和教师的组合为分组单元,确保统计范围限定在单个班级内的单个教师。
  • mutate(student_count = n_distinct(IDSTUD)):计算每组内的不同学生数量,避免同一学生重复关联教师时的重复计数。
  • filter(student_count == 1):筛选出仅被一个学生关联的教师,这些教师就是对应学生独有的资源。

运行结果

> unique_teachers

  IDSTUD IDCLASS IDTEACH
1 50120303  501203  501201

内容的提问来源于stack exchange,提问作者Pål Bjartan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 07:45:04