У меня есть следующий кадр данных. Я хочу предпочесть dplyr, чтобы решить эту проблему. Для каждой зоны я хочу минимум два значения. Значение> 4.0 является предпочтительным.
Следовательно, для зоны 10 все значения (будучи> 4.0) сохраняются. Для зоны 20 выбраны два верхних значения. Аналогично для зоны 30.
zone <- c(rep(10,4), rep(20, 4), rep(30, 4))
set.seed(1)
value <- c(4.5,4.3,4.6, 5,5, rep(3,7)) + round(rnorm(12, sd = 0.1),1)
df <- data.frame(zone, value)
> df
zone value
1 10 4.4
2 10 4.3
3 10 4.5
4 10 5.2
5 20 5.0
6 20 2.9
7 20 3.0
8 20 3.1
9 30 3.1
10 30 3.0
11 30 3.2
12 30 3.0
Требуемый вывод выглядит следующим образом
> df
zone value
1 10 4.4
2 10 4.3
3 10 4.5
4 10 5.2
5 20 5.0
6 20 3.1
7 30 3.1
8 30 3.2
Я думал об использовании top_n, но он выбирает один и тот же номер для каждой зоны.