仅按R中的升序递增过滤组

仅按R中的升序递增过滤组,r,dplyr,R,Dplyr,我很难弄清楚如何过滤数据帧中按降序递增的组。我将从一个输入开始: df <- structure(list(Animal = c("Cat", "Cat", "Cat", "Cat", "Cat", "Cat", "Dog", "Dog", "Dog", "Dog", "Rat&q

我很难弄清楚如何过滤数据帧中按降序递增的组。我将从一个输入开始:

df <- structure(list(Animal = c("Cat", "Cat", "Cat", "Cat", "Cat", 
"Cat", "Dog", "Dog", "Dog", "Dog", "Rat", "Rat", "Rat", "Rat", 
"Rat"), Value = c(2L, 3L, 5L, 8L, 19L, 20L, 4L, 8L, 19L, 33L, 
4L, 8L, 15L, 10L, 25L)), class = "data.frame", row.names = c(NA, 
-15L))

一个基于dplyr的解决方案可以是:

df %>%
 group_by(Animal) %>%
 filter(all(diff(Value) > 0))

   Animal Value
   <chr>  <int>
 1 Cat        2
 2 Cat        3
 3 Cat        5
 4 Cat        8
 5 Cat       19
 6 Cat       20
 7 Dog        4
 8 Dog        8
 9 Dog       19
10 Dog       33
df%>%
按(动物)分组%>%
过滤器(所有(差异(值)>0))
动物价值
1第2类
2第3类
3第5类
4第8类
5第19类
6第20类
7狗4
狗8
9狗19
10狗33
数据:

library(dplyr)

df %>% 
  filter(!Animal == "Rat") %>% 
  arrange(Animal, Value)
#>    Animal Value
#> 1     Cat     2
#> 2     Cat     3
#> 3     Cat     5
#> 4     Cat     8
#> 5     Cat    19
#> 6     Cat    20
#> 7     Dog     4
#> 8     Dog     8
#> 9     Dog    19
#> 10    Dog    33

df我将根据返回布尔值的
diff
定义一个名为
increating
的函数。以下是带有
dplyr
数据的版本。表

库(dplyr)
库(数据表)
df%
过滤器(增加(值))
dt[,.SD[增加(值)],由=动物]

谢谢。我的问题更多的是基于价值差异进行过滤,但这也是一个创造性的解决方案。