Я сделал воспроизводимый набор данных.
В этом наборе данных я пытаюсь получить столбцы, сгруппированные по «значению» и «категории», и получить наибольшее значение из всех в «категории», только если есть «значение», значение которого больше 4 в этом group_by
Другой способ задать вопрос - получить наибольшее «значение» для каждой «категории» для каждой метки, только если в этой «категории» «значение» больше 4 *
das <- data.frame(val=1:24,
weigh=c(10,10,10,11,11,11,20,20,20,21,21,21,30,30,30,31,31,31,40,40,40,41,41,41),
value=c(4.1,3.2,4.3,1.1,2.2,5.3,2.1,2.2,3.3,3.1,8.2,1.3,3.6,2.1,3.1,3.1,3.1,1.1,7.2,4.5,5.1,3.2,2.5,9.1),
label=c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4),
category=c("A","B","C","A","B","C","A","B","C","A","B","C","A","B","C","A","B","C","A","B","C","A","B","C"))
val weigh value label category
1 1 10 4.1 1 A
2 2 10 3.2 1 B
3 3 10 4.3 1 C
4 4 11 1.1 1 A
5 5 11 2.2 1 B
6 6 11 5.3 1 C
7 7 20 2.1 2 A
8 8 20 2.2 2 B
9 9 20 3.3 2 C
10 10 21 3.1 2 A
11 11 21 8.2 2 B
12 12 21 1.3 2 C
13 13 30 3.6 3 A
14 14 30 2.1 3 B
15 15 30 3.1 3 C
16 16 31 3.1 3 A
17 17 31 3.1 3 B
18 18 31 1.1 3 C
19 19 40 7.2 4 A
20 20 40 4.5 4 B
21 21 40 5.1 4 C
22 22 41 3.2 4 A
23 23 41 2.5 4 B
24 24 41 9.1 4 C
Ожидаемый результат
val weigh value label category
1 1 10 4.1 1 A
5 6 11 5.3 1 C
2 2 10 3.2 1 B
10 10 21 3.1 2 A
3 11 21 8.2 2 B
9 9 20 3.3 2 C
2 19 40 7.2 4 A
4 20 40 4.5 4 B
6 24 41 9.1 4 C
Я попытался выполнить следующее, но не получил ожидаемого результата. Здесь я просто получаю только значения> 4, а не все наибольшее число в этой категории с этим ярлыком
das1 <- das[das$value >4,]
result <- das1 %>%
group_by(category,label) %>%
slice(which.max(value))
val weigh value label category
1 1 10 4.1 1 A
5 6 11 5.3 1 C
3 11 21 8.2 2 B
2 19 40 7.2 4 A
4 20 40 4.5 4 B
6 24 41 9.1 4 C