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

R语言筛选data.frame:保留含0.3-0.7区间值的行

问题:筛选DataFrame中任意列值处于0.3-0.7区间的行

原始数据

V1      V2      V3      V4      V5
<dbl>   <dbl>   <dbl>   <dbl>   <dbl>
0.000   0.000   0.000   0.000   1.000
0.651   0.000   0.000   0.000   0.349
0.000   0.000   1.000   0.000   0.000
0.703   0.000   0.297   0.000   0.000
0.018   0.982   0.000   0.000   0.000
0.683   0.000   0.000   0.000   0.317
0.000   0.000   0.000   0.000   1.000
0.000   0.000   0.000   0.000   1.000
0.000   0.000   0.000   0.000   0.999

需求

筛选出任意一列存在数值在0.3到0.7之间的行,最终期望结果:

V1      V2      V3      V4      V5
<dbl>   <dbl>   <dbl>   <dbl>   <dbl>
0.651   0.000   0.000   0.000   0.349
0.683   0.000   0.000   0.000   0.317

错误代码问题分析

你之前使用的代码:

data %>% filter(if_any(starts_with("V"), ~ . > 0.3) & if_any(starts_with("V"), ~ . < 0.7))

返回几乎所有行的原因是:这个逻辑是“存在列数值大于0.3” 并且 “存在列数值小于0.7”,绝大多数行都满足这个条件(比如第一行V5=1>0.3,同时其他列都是0<0.7),所以会被错误保留。

正确实现方法

需要判断的是存在某一列的数值同时满足0.3 < 值 < 0.7,把两个条件合并到同一个if_any调用中:

data %>% filter(if_any(starts_with("V"), ~ . > 0.3 & . < 0.7))

验证结果

运行上述代码后,会准确筛选出符合要求的两行,与期望结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:05:27