У меня есть матрица 60x6
X
, где столбец 1 — это индекс, а столбцы со 2 по 6 — данные для этого конкретного индекса. Я хотел бы присвоить ранги каждому значению в столбцах данных, чтобы столбцы со 2 по 5 ранжировались в порядке убывания (наибольшее значение оценивается 1, наименьшее значение ранжируется 60), а столбец 6 ранжируется в порядке убывания (самое низкое значение оценивается 1, наивысший рейтинг 60), но так, чтобы порядок строк сохранялся в соответствии с индексом (столбец 1). Ранговым связям присваивается ранг, равный среднему значению их позиций в порядке возрастания значений.
Я просмотрел ряд предложений (здесь, здесь и здесь) и попробовал свою версию:
[~,Z1] = sort(X(:,2),'descend');
[~,Z2] = sort(X(:,3),'descend');
[~,Z3] = sort(X(:,4),'descend');
[~,Z4] = sort(X(:,5),'descend');
[~,Z5] = sort(X(:,6));
но ни один из них не работает так, как я хочу. Таким образом, для
X =
1 0.9503 0.5646 0.3785 0.5468 -0.0161
2 0.9430 0.5728 0.3320 0.6693 -0.0161
3 0.5305 0.2719 0.1545 0.3480 0.0042
4 0.8588 0.5816 0.3429 0.6477 -0.0158
5 0.9391 0.5984 0.3362 0.6054 -0.0161
6 0.3780 0.2307 0.0906 0.3387 0.0054
я нуждаюсь
Ans =
1 1 4 1 4 2
2 2 3 4 1 2
3 5 5 5 5 5
4 4 2 2 2 4
5 3 1 3 3 2
6 6 6 6 6 6