У меня есть последовательность чисел и векторов, которые следует использовать для оценки каждой последовательности чисел в соответствии с их рангами.

Пример

 a <- c(20, 29, 22)
 b <- c(21, 22, 27)
 data <- data.frame(cbind(a,b))
 c1 <- c(12,23,34,21,33,22,35,3,5,6,7,29,49)
 c2 <- c(12,23,34,21,33,22,35,3,5,6,7,29,49)

Как я могу проверить ранг каждого значения data$a в векторе c1 и каждого значения data$b в c2? Есть идеи? (Я абстрагировался от проблемы, но в сумме есть 28 значений для каждого человека (a, b, ...), которые мне нужно было бы ранжировать в соответствии с 28 значениями c ( c1, c2, ..., c28)).

Для первого значения a = 20 потребуется 6, поскольку из элементов c1; 12, 3, 5, 6 и 7 все меньше.

Любые идеи?

0
user43458 24 Фев 2015 в 18:42

2 ответа

Лучший ответ

Как насчет создания нового вектора с добавленным значением и ранжирования его? таким образом создавая цикл, который для каждого элемента вектора a выполняет:

rankVector=rank(append(c(a),c1))

А затем получите первое значение rankVector.

Полный цикл будет выглядеть так:

for (i in seq_along(a) ){

   rankVector[i]=rank(append(c(a[i]),c1))

}

Ура!

0
Pedro Braz 24 Фев 2015 в 18:38

Вы можете получить ранг своего вектора, используя функцию с именем rank, например. используйте следующее

   rank(a)

Если вы хотите ранжировать вектор на основе другого вектора, вы можете просто использовать следующие

C1[sort(order(C1)[C2])]

Вам нужно уточнить свой вопрос (возможно, добавьте пример)

0
24 Фев 2015 в 15:58