【发布时间】:2015-07-30 22:00:12
【问题描述】:
我有一个像这样的数据框:
> df
id type
1 1 a
2 1 a
3 1 b
4 1 a
5 1 b
6 2 a
7 2 a
8 2 b
9 3 a
10 3 a
我想将每个组 (id) 的所有行保留到类型列中值“b”的第一次出现。对于没有类型“b”的组,我想保留他们的所有行。
生成的数据框应如下所示:
> dfnew
id type
1 1 a
2 1 a
3 1 b
4 2 a
5 2 a
6 2 b
7 3 a
8 3 a
我尝试了以下代码,但它保留了超出第一次出现“b”的值为“a”的其他行,并且只排除了额外出现的“b”,这不是我想要的。请看下面的第 4 行。我想摆脱它。
> df %>% group_by(id) %>% filter(cumsum(type == 'b') <= 1)
Source: local data frame [7 x 2]
Groups: id
id type
1 1 a
2 1 a
3 1 b
4 1 a
5 2 a
6 2 a
7 2 b
8 3 a
9 3 a
【问题讨论】: