Индекс максимума повторяющихся максимальных значений в R

Я знаю, какой.max может сообщить мне индекс первого появления максимального значения, однако я хочу получить максимальное значение индекса из всех индексов, дублирующих максимальные значения в данном диапазоне.

Ниже приведены данные, с которыми я работаю.

#Given Data Set
Dataset1 <- data.frame(Index=1:6, Value=c(.456,.92,.88,.92,.88,0.85))
Dataset1

# Index Value
1     1 0.456
2     2 0.920
3     3 0.880
4     4 0.920
5     5 0.880
6     6 0.850

#--------------------------

#Create Filtered Combinations
N=nrow(Dataset1)

Comb<-data.frame(t(combn(seq(1:(N)), 2)))
library("plyr")
library("dplyr")
FComb<-Comb %>%
  filter(X2-X1>1) %>%
  select(X1,X2)

FComb.mat<-as.matrix(FComb) #Filtered Combination set as matrix
colnames(FComb.mat)[1:2] <- c("ind1","ind2")

#--------------------------

#Finding maximum value from original dataset in the range between "ind1" & "ind2"
fun <- function(x,y) max(Dataset1$Value[(.x <- x:y)[-c(1, length(.x))]])
Max.Val = as.matrix(mapply(fun, FComb.mat[,1], FComb.mat[,2]))

ПРОБЛЕМА:

Я хотел бы получить последний столбец "IndexMax", как показано ниже.

Например, для ind1=1 & ind2=5 (т. Е. Строки № 3) максимальное значение потока из набора данных 1 между индексом =1:5 составляет 0,920. Индекс этого максимального значения может быть 2 или 4, но я бы хотел выбрать 4, поскольку это максимальное значение индексов. Как бы я это реализовал?

Final
#   ind1 ind2 Max.Val IndexMax
1     1    3    0.92        2
2     1    4    0.92        2
3     1    5    0.92        4
4     1    6    0.92        4
5     2    4    0.88        3
6     2    5    0.92        4
7     2    6    0.92        4
8     3    5    0.92        4
9     3    6    0.92        4
10    4    6    0.88        5

заранее спасибо

1 ответ

Решение

Я на самом деле понял это сам. В случае, если это пригодится кому-либо еще в будущем:

fun2 <- function(x,y) max((which(Dataset1[,2][(.x <- x:y)][-c(1,length(.x))]==max(Dataset1[,2][(.x <- x:y)][-c(1, length(.x))])))+x)  
Max.Pos=as.matrix(mapply(fun2, FComb.mat[,1],FComb.mat[,2]))

Final<-data.frame(FComb.mat,Max.Val,Max.Pos)
Другие вопросы по тегам