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

R语言:基于Data Frame生成学生区间标记列的需求

实现方案

这里提供两种高效的R语言实现方式,均可生成符合需求的目标数据框:

基础向量循环法

适合偏好基础R语法的场景:

# 定义目标行数对应的行号序列
row_nums <- 1:5

# 遍历每个学生的G1/G2区间,生成对应0/1向量
student_vectors <- apply(DATA, 1, function(row) {
  # 判断行号是否处于[G1, G2]区间,转成整数(TRUE→1,FALSE→0)
  as.integer(row_nums >= row["G1"] & row_nums <= row["G2"])
})

# 转换为数据框并设置列名
result_df <- as.data.frame(student_vectors)
colnames(result_df) <- paste0("STUDENT", DATA$STUDENT)

# 输出结果
result_df

Tidyverse管道法

适合熟悉dplyr/tidyr的用户,代码更具可读性:

library(tidyverse)

result_df <- expand_grid(STUDENT = DATA$STUDENT, row_num = 1:5) %>%
  # 关联原始数据中的G1和G2区间
  left_join(DATA, by = "STUDENT") %>%
  # 标记行号是否在区间内
  mutate(value = as.integer(row_num >= G1 & row_num <= G2)) %>%
  # 转换为宽表结构
  pivot_wider(names_from = STUDENT, values_from = value, names_prefix = "STUDENT") %>%
  # 移除辅助行号列
  select(-row_num)

# 输出结果
result_df

两种方法运行后得到的result_df与你给出的DATA1完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:17:43