У меня есть data.frame, как показано ниже:Индекс заказов в R
set.seed(2013)
df <- data.frame(site = sample(c("A","B","C"), 10, replace = TRUE),
currency = sample(c("USD", "EUR", "GBP", "CNY", "CHF"),10, replace=TRUE, prob=c(10,6,5,6,0.5)),
value = sample(seq(1:10)/10,10,replace=FALSE))
Я хочу создать rank
столбец, в котором перечислены порядок соответствующей строки по отношению к его value
. Я пробовал sort()
и order()
, но они возвращают разные вещи. Как я могу получить желаемый результат, указанный в столбце «rank
»?
df$order <- order(df$value)
df$sort <- sort(df$value)
df
site currency value order sort | rank
1 B USD 0.6 2 0.1 | 6
2 C USD 0.1 5 0.2 | 1
3 C CNY 0.9 6 0.3 | 9
4 C GBP 1.0 10 0.4 | 10
5 A CNY 0.2 8 0.5 | 2
6 C CNY 0.3 1 0.6 | 3
7 C GBP 0.8 9 0.7 | 8
8 C GBP 0.5 7 0.8 | 5
9 C USD 0.7 3 0.9 | 7
10 C USD 0.4 4 1.0 | 4
ох .. Очевидно, я видел это, но запутался по описанию R справочного файла: 'Возвращает выборочные ряды значения в векторе. Связи (т. Е. Равные значения) и отсутствующие значения могут обрабатываться несколькими способами. Я как-то предполагал, что это ранг линейной алгебры, должен был попробовать, прежде чем задавать вопрос! – Rhubarb
@Berkan, это не будет первый раз, когда кто-то будет смущен документацией! (включая меня) :-) –
Да, на самом деле я использовал одно и то же имя для столбца в моем вопросе, чувствуя себя довольно хромым, хотя :). – Rhubarb