Страница 1 из 1

Рейтинг по показателям

Добавлено: 01 окт 2020, 15:10
VistaSV30
Добрый день!
Может быть в R есть более эффективный способ поиска индекса элемента?

Задача такая
Дана таблица:

Код: Выделить всё

set.seed(100)
df <- data.frame(Nm=LETTERS[1:5], N1=sample(100:999, 5), N2=sample(100:999, 5))
  Nm  N1  N2
1  A 813 569
2  B 602 615
3  C 457 922
4  D 723 937
5  E 817 197
Надо определить индекс элемента "А" в зависимости от значений в столбцах N1 и N2
Например, по столбцу N1 элемент "А" стоит на 4 месте.

Пока я это решаю так:

Код: Выделить всё

set.seed(100)
df <- data.frame(Nm=LETTERS[1:5], N1=sample(100:999, 5), N2=sample(100:999, 5))

# Рейтинг А по первой колонке
df <- df[order(df$N1),]
which(df$Nm == "A", arr.ind = F) 

# Рейтинг А по второй колонке
df <- df[order(df$N2),]
which(df$Nm == "A", arr.ind = F) 
Может быть есть более эффективный способ?
Спасибо!

Re: Рейтинг по показателям

Добавлено: 01 окт 2020, 15:27
gamm
order(rank(df$N1)+rank(df$N2))

Re: Рейтинг по показателям

Добавлено: 01 окт 2020, 15:47
VistaSV30
Так правильно?

Код: Выделить всё

# Рейтинг А по первой колонке
rank(df$N1)[which(df$Nm=="A")]

Re: Рейтинг по показателям

Добавлено: 01 окт 2020, 15:58
gamm

Код: Выделить всё

set.seed(100)
df <- data.frame(Nm=LETTERS[1:5], N1=sample(100:999, 5), N2=sample(100:999, 5))
df
df$reiting=order(rank(df$N1)+rank(df$N2))
df

Re: Рейтинг по показателям

Добавлено: 01 окт 2020, 16:20
VistaSV30
Спасибо большое!
Но мне нужен был рейтинг отдельно по каждому показателю, а не одновременно по двум.

Т.е. должно получится такое сообщение:
- по показателю N1 "А" занимает 4 место;
- по показателю N2 "А" занимает 2 место.

И соответственно код:

Код: Выделить всё

rank(df$N1)[which(df$Nm=="A")]
rank(df$N2)[which(df$Nm=="A")]
Результат получается такой как мне надо.
Можно ли это решение назвать правильным? Или надо как-то по другому делать?

Re: Рейтинг по показателям

Добавлено: 01 окт 2020, 18:59
gamm
VistaSV30 писал(а):
01 окт 2020, 16:20
Но мне нужен был рейтинг отдельно по каждому показателю, а не одновременно по двум.
а написано было другое
Надо определить индекс элемента "А" в зависимости от значений в столбцах N1 и N2

Re: Рейтинг по показателям

Добавлено: 02 окт 2020, 12:51
VistaSV30
Извиняюсь, неправильно сформулировал.
В выражении "N1 и N2" подразумевалась не конъюнкция а, дизъюнкция :D