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

在R中如何移除特定type最大索引后的2行数据?

实现思路与代码

核心步骤

  • 定位目标行号:找出type为3和4的所有行索引,取其中最大值(即最后一次出现的位置)
  • 确定待删除行:每个目标type最后一行的后2行,就是要剔除的范围
  • 筛选保留数据:从原数据中排除这些待删除的行

具体代码实现

# 原始数据
data <- data.frame(grade = c(93,90,54,36,31,94,57,16,11,12,99,99,9,10,97,96), 
                   type = c(2,2,2,4,4,1,1,3,3,3,1,1,3,3,1,1))

# 1. 获取type=4和type=3最后一次出现的行号
last_type4 <- max(which(data$type == 4))
last_type3 <- max(which(data$type == 3))

# 2. 整理需要删除的行号集合
remove_rows <- c((last_type4 + 1):(last_type4 + 2), 
                 (last_type3 + 1):(last_type3 + 2))

# 3. 筛选得到目标数据
result <- data[-remove_rows, ]

# 查看结果
print(result)

补充说明

  • which(data$type == x)能精准定位所有type等于x的行,取最大值即可拿到最后一次出现的位置
  • 用:生成连续行号范围,合并后一次性剔除,操作简洁高效
  • 如果担心出现行号超出数据总行数的情况(比如某类type最后一次出现在倒数第2行),可以用pmin(last_typeX +2, nrow(data))来限制上限,避免报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:55:20