Я знаю, что есть похожие вопросы, но я не мог найти ответ на мой вопрос. Я пытаюсь ранжировать элементы в матрице, а затем извлекать данные из 5 наивысших элементов.Элементы ранжирования и подсчета матриц в R
Вот моя попытка.
set.seed(20)
d<-matrix(rnorm(100),nrow=10,ncol=10)
start<-d[1,1]
for (i in 1:10) {
for (j in 1:10) {
if (start < d[i,j])
{high<-d[i,j]
rowind<-i
colind<-j
}
}
}
Хотя это дает мне данные самого высокого элемента, в том числе номеров строк и столбцов, я не могу придумать способ сделать то же самое для элементов, ранжированных от 2 до 5. Я также попытался
rank(d, ties.method="max")
Но это не помогло, потому что оно просто выплескивает ранг в векторном формате. То, что я в конечном итоге хочу, - это кадр данных (или любая таблица), которая содержит ранг, имя столбца, имя строки и число (число) наивысших 5 элементов в матрице.
Редактировать
set.seed(20)
d<-matrix(rnorm(100),nrow=10,ncol=10)
d[1,2]<-5
d[2,1]<-5
d[1,3]<-4
d[3,1]<-4
Спасибо за ответы. Они отлично работали для моей цели, но когда я запускаю этот код для корреляционной диаграммы, где будут повторяющиеся числа для каждой пары, я хочу считать только одно из двух чисел для целей ранжирования. Есть какой-либо способ сделать это? Благодарю.
Это по строке или столбцу? – akrun
Пожалуйста, используйте set.seed перед тем, как сделать случайный пример. Помогает людям проверять и сравнивать ответы. – Frank
@Frank Спасибо за предложение. Просто сделал изменения. – sh2657