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

R语言如何按学生分组将列内的1转换为连续递增序号序列

实现代码(基于dplyr)

首先加载依赖包:
library(dplyr)

构造示例测试数据:

# 示例数据构造
df <- data.frame(
  Student = rep(c(1,2,3), each = 4),
  Number = c(NA, NA, 1, 1, NA, 1, 1, 1, NA, NA, 1, 1)
)

核心处理逻辑:

df_res <- df %>%
  # 按学生分组,保证计数仅在同学生范围内生效
  group_by(Student) %>%
  mutate(Number = ifelse(!is.na(Number), cumsum(!is.na(Number)), NA)) %>%
  ungroup()

逻辑说明

  • 按Student字段分组后,对每个学生的记录单独处理
  • 对Number列非NA的位置做累计计数,每遇到一个非NA值就累加1,NA值保持不变,最终输出结果和需求完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:57:02