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

R语言如何在分组数据中保留变量首个值其余设置为NA

实现方案

你可以通过以下两种常用方式实现需求,无需自定义特殊函数:

方法1:使用dplyr包(tidyverse生态常用方案)

适合习惯tidyverse语法的场景,代码可读性高:

library(dplyr)

# 假设你的原始数据框命名为df
result <- df %>%
  # 按n_historia分组
  group_by(n_historia) %>%
  # 仅保留组内第一行的指定列值,其余行设为NA
  mutate(
    fecha_primer_pos = ifelse(row_number() == 1, fecha_primer_pos, NA),
    fecha_ultimo_pos = ifelse(row_number() == 1, fecha_ultimo_pos, NA)
  ) %>%
  # 取消分组,避免后续操作受分组逻辑影响
  ungroup()

如果需要先按某一字段(比如时间字段from)排序后再取首行,只需在group_by语句后加一行arrange(from)即可。

方法2:基础R实现(无需加载第三方包)

运行效率更高,适合处理大数据量场景:

# 生成每个n_historia分组内的行序号
group_rowid <- ave(rep(1, nrow(df)), df$n_historia, FUN = seq_along)
# 直接将非首行的指定列赋值为NA
df[group_rowid != 1, c("fecha_primer_pos", "fecha_ultimo_pos")] <- NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:15:01