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

R语言按id分组后删除各组首次出现sex==2后的多余行如何实现?

问题分析

你提交的代码存在两处核心问题:

  • 调用了示例数据中不存在的type列
  • silec为拼写错误(应为select),且filter的语法使用不符合dplyr的管道规则,因此无法运行。

正确实现方案

dplyr 版本

逻辑为按id分组后,仅删除紧跟在sex==2之后的连续重复sex==2行,其余行全部保留,完全匹配你提供的预期输出:

library(dplyr)
data1 <- data %>%
  group_by(id) %>%
  filter(!(sex == 2 & lag(sex, default = 1) == 2)) %>%
  ungroup()

运行后输出结果如下:

id sex
1   1   1
2   1   1
3   1   2
4   2   1
5   2   1
6   2   1
7   2   2
8   3   1
9   3   1
10  3   2
11  3   1
12  3   1
13  3   2
14  4   1
15  4   2

基础 R 版本(无需加载第三方包)

data1 <- data[ave(data$sex, data$id, FUN = function(x) {
  !(x == 2 & c(1, x[-length(x)]) == 2)
}) == 1, ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:45:05