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

R语言如何在存在数据缺失间隔的情况下对列的连续值进行分组

问题原因

原有代码的逻辑是每匹配到一条完整记录就给累计值加1,因此连续的无缺失行也会被拆分为不同的组,不符合分组需求。

调整方案

核心逻辑改为仅在**当前行是完整记录、且前一行是缺失记录(或当前为第一条记录)**时才更新组号,再将存在缺失的行的组号置为NA即可:
首先构造测试数据:

test <- data.frame(
  a = 1:10,
  b = c(1,2,3,NA,NA,NA,12,15,NA,25)
)

调整后的代码:

library(dplyr)
test %>%
  mutate(is_complete = complete.cases(.),
         # 仅新的连续完整块开始时累计值加1
         group = cumsum(is_complete & !lag(is_complete, default = FALSE)),
         # 缺失行的组号设为NA
         group = ifelse(is_complete, group, NA)) %>%
  select(a, b, group)

输出结果

运行后即可得到目标输出:

a  b group
1   1  1     1
2   2  2     1
3   3  3     1
4   4 NA    NA
5   5 NA    NA
6   6 NA    NA
7   7 12     2
8   8 15     2
9   9 NA    NA
10 10 25     3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:57:00