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

如何基于Age列的数值区间删除R语言数据框中的行?

解决R语言数据框筛选的问题

嗨,这个问题我之前也踩过坑~你原来的代码没法正常运行,核心原因是R不支持像数学表达式那样的连续比较写法(25 < x < 30)。这种写法在R里会被错误解析:它会先判断25 < df$Age得到一组TRUE/FALSE的逻辑值,接着把这些逻辑值自动转成1(TRUE)和0(FALSE),再和30做比较,结果完全不是你想要的筛选逻辑。

给你两种靠谱的实现方法,任选其一就行:

方法1:基础R原生写法

把连续比较拆成两个独立条件,用&(逻辑与)连接,再取反就能达到删除目标行的效果:

# 先重现你的原始数据框
df <- read.table(sep="", header=T, text="Name Age Rate Aira 23 90 Ben 32 98 Cat 27 95")

# 正确的筛选代码
df <- df[!(df$Age > 25 & df$Age < 30), ]

运行后就能得到你期望的结果:

Name Age Rate
1  Aira  23   90
2   Ben  32   98

方法2:用dplyr包更直观地筛选

如果你习惯用tidyverse工具链,dplyr::filter的写法会更易懂,直接写要保留的条件就行:

library(dplyr)

df <- df %>% 
  filter(Age <= 25 | Age >= 30)  # 直接保留年龄≤25或≥30的行

这个逻辑和方法1完全等价,结果也一模一样。

另外还可以用dplyr::between函数(注意它是闭区间,所以要调整参数匹配你的需求):

df <- df %>% 
  filter(!between(Age, 26, 29))  # 排除26到29之间的行,和你的需求一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:22:26