как найти первое значение col по максимальным значениям во втором col (в матрице) - PullRequest
0 голосов
/ 30 октября 2019

У меня есть эта матрица, которую я пытаюсь найти значением firstPlace по максимальному значению / значениям в столбце freq:

enter image description here

это код, который я использую для получения максимальных значений:

mat1[which(mat1 == max(mat1[,2]), arr.ind = TRUE)]

вывод:

enter image description here

Но что я на самом деленужно Vector из "CR","MS"

РЕДАКТИРОВАТЬ:

этот код, который генерирует матрицу:

firstPlace <- c(1:100)
secondPlace <- c(1:100)
thirdPlace <- c(1:100)
for(i in thirdPlace){
  players <- c("CR","MS","LM")
  chances <- c(0.3,0.3,0.4)
  firstPlace[i] <- sample(players,size = 1,replace = TRUE ,prob = chances)
  players <- players[!(players %in% firstPlace[i])]
  secondPlace[i] <- sample(players,1,replace = TRUE)
  thirdPlace[i] <- players[!(players %in% secondPlace[i])]
  players <- c("CR","MS","LM")
}
mat1 <- as.data.frame(table(firstPlace)) %>% print()

1 Ответ

1 голос
/ 30 октября 2019

Существует функция which.max, которая возвращает индекс элемента max.

Код выглядит следующим образом:

as.character(mat1$firstPlace[which.max(mat1$Freq)])

PS Возвращает только первые максимумы в случаедве точки данных с максимальным значением. Если вы хотите все, я бы предложил использовать следующее:

as.character(mat1$firstPlace[which(mat1$Freq == max(mat1$Freq,na.rm=T))])

Это должно дать вам желаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...