Я думаю, что вы ищете rank
вместо order
, но rank
может принимать только одно значение столбца. Таким образом, мы можем сначала order
данные, основанные на names
, а затем использовать rank
.
test <- test[order(test$names), ]
rank(-test$scores, ties.method = "first")
#[1] 1 5 2 3 4
См. ?rank
для различных ties.method
вариантов. Если мы используем ties.method = "first"
, когда есть в ie небольшая цифра присваивается записи, которая появляется первой и противоположной, когда ties.method = "last"
.
rank(-test$scores, ties.method = "last")
#[1] 2 5 1 3 4
order
возвращает индексы оригинала вектор в отсортированном порядке.
a1 <- order(test$scores, decreasing = TRUE)
a1
#[1] 1 3 4 5 2
a2 <- test$scores
a2
#[1] 10 5 10 9 8
Здесь вывод order
можно интерпретировать как a2[a1[1]]
(10) - наибольшее число, за которым следуют a2[a1[2]]
(10) и a2[a1[3]]
(9) и так далее.
данные
names <- c("Anna", "Bella", "Christian", "Derrick", "Emma")
scores <- c(10,5,10,9,8)
age <- c(16,16,17,18,21)
test <- data.frame(names, scores, age)