以下是数据框x:
> x <- data.frame(a = c(0.1,0.1,0.1,1,1.1,1.2,2.1,3.1,3.3,3.2,3.1,2.1,2.0,0.1,0.1,1.1,2.1,3.1,4))
在值开始递减之前,a的第一个最大值是3.3。如何在不查看绘图的情况下使用代码确定此值?
答案 0 :(得分:4)
使用基础R我会选择
x[which(diff(x$a) < 0L)[1L],]
## [1] 3.3
答案 1 :(得分:2)
“which.max”更快一点:
> system.time(
+ for ( i in 1:1000000 ) { a <- x$a[which.max(diff(x$a)<0)] }
+ )
User System verstrichen
62.42 0.01 62.65
> system.time(
+ for ( i in 1:1000000 ) { b <- x[which(diff(x$a) < 0L)[1L],] }
+ )
User System verstrichen
111.43 0.00 112.14
>
结果是一样的:
> a
[1] 3.3
> b
[1] 3.3
答案 2 :(得分:0)
library(dplyr)
filter(x,lag(a)<a & a>lead(a))