我想在每个组中获得第一行。
例如:-我有一个数据框
df =>
id col_1 col_2 col_3
1 var_1 11 ba
2 var_1 12 ba
3 var_1 13 sw
4 var_1 13 sw
5 var_1 14 ba
6 var_1 11 ba
7 var_1 2 ba
8 var_1 45 ba
9 var_2 11 ba
10 var_2 12 ba
11 var_2 13 sw
12 var_2 13 sw
13 var_2 14 ba
14 var_2 11 ba
15 var_2 2 ba
16 var_2 45 ba
17 var_3 11 ba
output would be =>
id col_1 col_2 col_3
1 var_1 11 ba
3 var_1 13 sw
5 var_1 14 ba
9 var_2 11 ba
11 var_2 13 sw
13 var_2 14 ba
17 var_3 11 ba
如果我使用重复功能,那么它仅由col_1给出第一行。
答案 0 :(得分:1)
library(dplyr)
df %>%
group_by(col_1, col_2, col_3) %>%
slice(1) %>%
ungroup() %>%
arrange(id) %>%
filter(id == 1 | !(col_1 == lag(col_1, 1) & col_3 == lag(col_3, 1)))
id col_1 col_2 col_3
<int> <chr> <int> <chr>
1 1 var_1 11 ba
2 3 var_1 13 sw
3 5 var_1 14 ba
4 9 var_2 11 ba
5 11 var_2 13 sw
6 13 var_2 14 ba
7 17 var_3 11 ba