如何筛选未包含[-1,0]区间数值的唯一ID对应行?
解决方案
可以通过dplyr的分组筛选逻辑实现需求,核心是先按id分组,判断每个分组内是否存在落在[-1, 0]区间的数值,再保留完全无此类数值的分组的所有行。
实现代码
library(dplyr) df <- data.frame (id = c(1,1,1,1,1,1,1,1,2,2,2,2,2, 3, 3), number = c(-10, -9, -8, -1, -0.5, 0.0, 0.23, 5, -2, -1.1, -.88, 1.2, 4, -10,10)) # 筛选无[-1,0]区间测量值的ID对应的所有行 result_df <- df %>% group_by(id) %>% filter(all(!(number >= -1 & number <= 0))) %>% ungroup() result_df
代码说明
group_by(id):按ID对数据集分组,便于针对每个ID的所有测量值做统一判断filter(all(!(number >= -1 & number <= 0))):number >= -1 & number <= 0用于判断单个数值是否落在目标区间!取反后,得到「数值不在目标区间」的判断结果all()确保当前分组的全部数值都满足「不在目标区间」的条件,只有符合该条件的分组才会被保留
ungroup():取消分组,恢复常规数据框结构
运行结果
执行后将得到仅包含ID为3的两行数据:
# A tibble: 2 × 2 id number <dbl> <dbl> 1 3 -10 2 3 10
内容的提问来源于stack exchange,提问作者Bostonbball21
相关产品推荐
相关产品推荐

