Tôi có đoạn mã sau:Tìm chỉ số của cummax bên trong một đột biến 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
mà kết quả đầu ra
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
Tôi muốn thêm một cột đột biến mà sẽ thêm rownumber/index từ đó max_then đã được tính toán. Tôi tưởng tượng nó sẽ giống như sau. nhưng tôi không thể làm cho nó hoạt động được.
test %>%
group_by(y) %>%
mutate(max_then-cummax(x),
max_index=which(.$x==max_then))
sản lượng dự kiến là:
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
Bất kỳ lời đề nghị? Tôi chỉ tò mò muốn xem liệu người ta có thể làm điều này trong câu lệnh mutate() hay không. Tôi có thể làm điều đó bên ngoài câu lệnh mutate().
Hãy sử dụng 'set.seed'. Ngoài ra, bạn có thể giảm 10 hàng này. Cuối cùng, vui lòng cung cấp kết quả mong muốn của bạn. –