基于r中当前和以前实体的条件的子集数据

基于r中当前和以前实体的条件的子集数据,r,conditional-statements,subset,R,Conditional Statements,Subset,我有状态列中的数据。我想将我的数据子集为'f'状态的条件,以及'f'状态的先前条件。 要简化: df id status time 1 n 1 1 n 2 1 f 3 1 n 4 2 f 1 2 n 2 3 n 1 3 n 2 3 f 3 3 f 4 我的结果应该是: id status time 1

我有
状态
列中的数据。我想将我的数据子集为
'f'
状态的条件,以及
'f'
状态的先前条件。 要简化:

df
id  status  time
1    n       1
1    n       2
1    f       3
1    n       4
2    f       1
2    n       2
3    n       1
3    n       2
3    f       3
3    f       4
我的结果应该是:

id  status  time
1    n       2
1    f       3
2    f       1
3    n       2
3    f       3
3    f       4

如何在R中执行此操作?

这里有一个使用
dplyr的解决方案-

df %>%
  group_by(id) %>%
  filter(status == "f" | lead(status) == "f") %>%
  ungroup()

# A tibble: 6 x 3
     id status  time
  <int> <fct>  <int>
1     1 n          2
2     1 f          3
3     2 f          1
4     3 n          2
5     3 f          3
6     3 f          4
df%>%
分组依据(id)%>%
筛选器(状态==“f”| lead(状态==“f”)%>%
解组()
#一个tibble:6x3
身份证状态时间
1 1 n 2
2 1 f 3
3 2 f 1
4 3 n 2
5 3 f 3
6 3 f 4
数据-

df <- structure(list(id = c(1L, 1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L, 3L), 
    status = structure(c(2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 
    1L), .Label = c("f", "n"), class = "factor"), time = c(1L, 
    2L, 3L, 4L, 1L, 2L, 1L, 2L, 3L, 4L)), .Names = c("id", "status", 
"time"), class = "data.frame", row.names = c(NA, -10L))

df不清楚您用于删除行的逻辑。关于“先前实体的条件”,您是否查看了
lag