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

在R中按S.NO分组为每组年龄数据首尾添加NA

R语言按分组为年龄数据首尾添加NA的解决方案

步骤1:构造原始数据集

先将你提供的原始数据加载到R环境中:

library(dplyr)
library(tibble)

# 原始数据集
df <- tibble(
  S.NO = c(123, 124, 124, 124, 125, 125, 126),
  AGE_1 = c(19, 18, 21, 28, 13, 19, 19),
  AGE_2 = c(24, 21, 28, 35, 19, 23, 21)
)

步骤2:分组处理生成预期数据集

使用dplyr的分组功能,为每个分组添加首尾带NA的行:

result <- df %>%
  group_by(S.NO) %>%
  group_modify(function(data, key) {
    # 提取当前分组的首个AGE_1和最后一个AGE_2
    first_age <- data$AGE_1[1]
    last_age <- data$AGE_2[nrow(data)]
    
    # 构造首行(AGE_1为NA,AGE_2取首个年龄)和末行(AGE_1取最后一个年龄,AGE_2为NA)
    top_row <- tibble(S.NO = key$S.NO, AGE_1 = NA, AGE_2 = first_age)
    bottom_row <- tibble(S.NO = key$S.NO, AGE_1 = last_age, AGE_2 = NA)
    
    # 合并首行、原分组数据、末行
    bind_rows(top_row, data, bottom_row)
  }) %>%
  ungroup()

# 查看最终结果
print(result)

代码说明

  • group_by(S.NO):按S.NO字段拆分数据集,单独处理每个分组
  • group_modify:对每个分组执行自定义逻辑,data是当前分组的子数据集,key是分组的标识值
  • 提取分组内的首尾年龄值,构造符合要求的首尾行后,与原分组数据合并
  • ungroup():取消分组状态,得到完整的结果数据集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:35:20