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

在R语言中按多个数值范围筛选数据框行的问题

解决dplyr筛选指定Day范围的问题

你写的代码里,Day == 1:3 | Day ==7:10是按位置逐元素匹配的,不是判断Day是否属于这两个数值集合。因为df有30行,1:3会循环10次,7:10会循环7次还多2个元素,逻辑判断结果因此混乱,导致只筛选出了部分符合预期的行。

下面是几种正确的写法:

方法1:用%in%匹配目标集合

把需要保留的Day值合并成一个向量,用%in%判断Day是否在这个集合内:

df2 <- dplyr::filter(df, Day %in% c(1:3, 7:10))

方法2:用逻辑区间直接判断

写出两个范围的逻辑条件,用|连接实现“或”的判断:

df2 <- dplyr::filter(df, (Day >= 1 & Day <= 3) | (Day >=7 & Day <=10))

方法3:用dplyr的between函数简化区间判断

利用dplyr::between快速判断数值是否在指定区间内:

df2 <- dplyr::filter(df, dplyr::between(Day, 1, 3) | dplyr::between(Day,7,10))

以上三种方法都能正确保留所有ID对应的Day为1、2、3、7、8、9、10的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:22:40