Mam następujący kod:Znalezienie indeksu cummax wewnątrz mutanta 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
który wyprowadza
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
Chcę dodać kolejny zmutowany kolumnę, która dodać RowNumber/indeks z którego max_then została obliczona. Wyobrażam sobie, że będzie to coś takiego. ale naprawdę nie mogę tego zrobić.
test %>%
group_by(y) %>%
mutate(max_then-cummax(x),
max_index=which(.$x==max_then))
Oczekiwany wynik jest:
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
Wszelkie sugestie? Jestem tylko ciekawy, czy można to zrobić w ramach instrukcji mutate(). Mogę to zrobić poza instrukcją mutate().
Proszę używać 'set.seed'. Można również prawdopodobnie zmniejszyć to do 10 wierszy. Na koniec proszę podać pożądany wynik. –