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

如何在R中移除y值处于其他值±100范围内的行?

R语言实现移除y值与其他y值相差±100范围内的行

核心逻辑

我们的目标是保留那些y值与所有其他行y值的差距都超过100的行——换句话说,只要某行的y值和任意其他行的y值相差在±100以内,就移除该行。

方法一:用dplyr包实现(直观易懂)

先加载dplyr工具包,通过逐行检查筛选符合条件的行:

library(dplyr)

# 示例输入数据框(替换成你的input数据即可)
input <- tibble(
  x = c(1, 2, 3, 4, 5),
  y = c(100, 150, 300, 450, 500)
)

# 筛选保留符合条件的行
output <- input %>%
  rowwise() %>%
  # 检查当前行y值与所有其他行y值的差的绝对值是否都大于100
  filter(all(abs(y - input$y[-cur_group_rows()]) > 100)) %>%
  ungroup()

方法二:基础R实现(无需额外包)

用sapply生成筛选逻辑向量,直接提取目标行:

# 生成逻辑向量:TRUE表示该行需要保留
keep_flag <- sapply(1:nrow(input), function(row_idx) {
  # 取当前行y值与所有其他行y值的差,检查是否全部大于100
  all(abs(input$y[row_idx] - input$y[-row_idx]) > 100)
})

# 提取保留的行
output <- input[keep_flag, ]

示例验证

拿上面的示例输入来说:

  • 100和150相差50(≤100),所以这两行被移除
  • 450和500相差50(≤100),这两行也被移除
  • 300与其他所有y值的差都大于100,所以保留

最终输出结果为:

xy
3300

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 09:15:42