找到dplyr mutate内的cummax指数?

Jim*_*mbo 8 r dplyr

我有以下代码:

library(dplyr)
set.seed(10)
test<-data.frame(x=runif(10,0,1),y=rep(c(1,2),5))
test <- test %>%
  group_by(y) %>%
  mutate(max_then=cummax(x))

test
Run Code Online (Sandbox Code Playgroud)

哪个输出

Source: local data frame [10 x 3]
Groups: y

            x y  max_then
1  0.50747820 1 0.5074782
2  0.30676851 2 0.3067685
3  0.42690767 1 0.5074782
4  0.69310208 2 0.6931021
5  0.08513597 1 0.5074782
6  0.22543662 2 0.6931021
7  0.27453052 1 0.5074782
8  0.27230507 2 0.6931021
9  0.61582931 1 0.6158293
10 0.42967153 2 0.6931021
Run Code Online (Sandbox Code Playgroud)

我想添加另一个变异列,它将添加从中计算max_then的rownumber/index.我想它会像下面这样.但我真的无法让它发挥作用.

test %>%
 group_by(y) %>%
     mutate(max_then-cummax(x),
            max_index=which(.$x==max_then))
Run Code Online (Sandbox Code Playgroud)

预期产出是:

            x y  max_then max_index
1  0.50747820 1 0.5074782         1
2  0.30676851 2 0.3067685         2
3  0.42690767 1 0.5074782         1
4  0.69310208 2 0.6931021         4
5  0.08513597 1 0.5074782         1
6  0.22543662 2 0.6931021         4
7  0.27453052 1 0.5074782         1
8  0.27230507 2 0.6931021         4
9  0.61582931 1 0.6158293         9
10 0.42967153 2 0.6931021         4
Run Code Online (Sandbox Code Playgroud)

有什么建议?我只是想知道是否可以在mutate()语句中执行此操作.我可以在mutate()语句之外完成它.

Dav*_*urg 10

我只想匹配x中的唯一实例

test %>%
  mutate(max_index = match(max_then, unique(test$x)))
# Source: local data frame [10 x 4]
# Groups: y
# 
#              x y  max_then max_index
#  1  0.50747820 1 0.5074782         1
#  2  0.30676851 2 0.3067685         2
#  3  0.42690767 1 0.5074782         1
#  4  0.69310208 2 0.6931021         4
#  5  0.08513597 1 0.5074782         1
#  6  0.22543662 2 0.6931021         4
#  7  0.27453052 1 0.5074782         1
#  8  0.27230507 2 0.6931021         4
#  9  0.61582931 1 0.6158293         9
#  10 0.42967153 2 0.6931021         4
Run Code Online (Sandbox Code Playgroud)