Am un cadru de date ca acesta:
> 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
Vreau să păstrez toate rândurile pentru fiecare grup (id) până la prima apariție a valorii „b” în coloana de tip. Pentru grupurile fără tipul „b”, vreau să păstrez toate rândurile lor.
Cadrul de date rezultat ar trebui să arate astfel:
> 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
Am încercat următorul cod, dar păstrează rânduri suplimentare care au valoarea „a” dincolo de prima apariție a lui „b” și exclude doar aparițiile suplimentare ale lui „b”, ceea ce nu este ceea ce vreau. Priviți rândul 4 din următoarele. Vreau să scap de el.
> 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