首页 > 解决方案 > 根据多个条件过滤一组data.frame

问题描述

我正在寻找一种优雅的方法来根据多个条件过滤特定组大 data.frame 的值。

我的数据框看起来像这样。

data=data.frame(group=c("A","B","C","A","B","C","A","B","C"), 
                time= c(rep(1,3),rep(2,3), rep(3,3)), 
                value=c(0.2,1,1,0.1,10,20,10,20,30))

  group time value
1     A    1   0.2
2     B    1   1.0
3     C    1   1.0
4     A    2   0.1
5     B    2  10.0
6     C    2  20.0
7     A    3  10.0
8     B    3  20.0
9     C    3  30.0

我只想在时间点 1 过滤掉所有小于 1 但大于 0.1 的值

我希望我的 data.frame 看起来像这样。

  group time value
1     A    1   0.2
4     A    2   0.1
5     B    2  10.0
6     C    2  20.0
7     A    3  10.0
8     B    3  20.0
9     C    3  30.0

非常感谢任何帮助。

标签: rdplyrtidyverse

解决方案


dplyr你可以做

library(dplyr)

data %>% filter(!(time == 1 & (value <= 0.1 | value >= 1))) 

#   group time value
# 1     A    1   0.2
# 2     A    2   0.1
# 3     B    2  10.0
# 4     C    2  20.0
# 5     A    3  10.0
# 6     B    3  20.0
# 7     C    3  30.0

推荐阅读