根据在特定时间点适用的多种条件,过滤出一组data.frame

时间:2020-10-13 13:40:14

标签: r dplyr tidyverse

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

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,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.5的组的值 且小于0.1。 我希望我的data.frame看起来像这样。

  group time value
1     A    1   0.2
2     A    2   0.1
3     A    3  10.0

我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以选择valuetime = 1在0.1和0.5之间的组。

library(dplyr)

data %>%
  group_by(group) %>%
  filter(between(value[time == 1], 0.1, 0.5))

#  group  time value
#  <chr> <dbl> <dbl>
#1 A         1   0.2
#2 A         2   0.1
#3 A         3  10