повторный заказ data.frame на основе logi c для каждой строки - PullRequest
0 голосов
/ 03 августа 2020

У меня есть много разных data.frames, которые структурированы следующим образом:

      Pos                  Name PG SG SF PF C PGSG PGSF SGSF SFPF PFC
1   PG/SG          James Harden  0  0  0  0 0    1    0    0    0   0
2      PF Giannis Antetokounmpo  0  0  0  1 0    0    0    0    0   0
4      PG     Russell Westbrook  1  0  0  0 0    0    0    0    0   0
42      C      Hassan Whiteside  0  0  0  0 1    0    0    0    0   0
123 SG/SF          Bradley Beal  0  0  0  0 0    0    0    1    0   0
124 PG/SG     Spencer Dinwiddie  0  0  0  0 0    1    0    0    0   0
132    PG          Kyrie Irving  1  0  0  0 0    0    0    0    0   0
162  PF/C     LaMarcus Aldridge  0  0  0  0 0    0    0    0    0   1

Обратите внимание, что все столбцы после «Name» (PG, SG, SF ...) - это просто флаги на какой позиции игрок указан в столбце «Pos»

Итак, Джеймс Харден указан как «PGSG», что означает, что он может быть PG или SG

Я хочу изменить порядок данных. кадр строго по позициям. Макет, который я хочу, выглядит следующим образом:

  1. PG
  2. SG
  3. SF
  4. PF
  5. C
  6. PG или SG
  7. SF или PF
  8. любое

Каждая строка ДОЛЖНА содержать указанную позицию. например. в строке 3 ДОЛЖЕН быть игрок, имеющий право на SF (который может быть указан как «SF», «PGSF», «SGSF» или «SFPF»). В этом примере единственный игрок, который может быть в строке 3, - это Брэдли Бил

Джеймс Харден может быть указан в строках 1, 2, 6 или 8

Ламаркус Олдридж может быть указан в строках 4, 5, 7 или 8

Хассан Уайтсайд может быть указан только в строках 5 или 8

Конечно, из-за нескольких общих позиций между игроками может быть много решений для каждой информации. Рамка. Одно из возможных решений для показанного выше примера data.frame:

      Pos                  Name PG SG SF PF C PGSG PGSF SGSF SFPF PFC
1   PG/SG          James Harden  0  0  0  0 0    1    0    0    0   0
124 PG/SG     Spencer Dinwiddie  0  0  0  0 0    1    0    0    0   0
123 SG/SF          Bradley Beal  0  0  0  0 0    0    0    1    0   0
2      PF Giannis Antetokounmpo  0  0  0  1 0    0    0    0    0   0
42      C      Hassan Whiteside  0  0  0  0 1    0    0    0    0   0
4      PG     Russell Westbrook  1  0  0  0 0    0    0    0    0   0
162  PF/C     LaMarcus Aldridge  0  0  0  0 0    0    0    0    0   1
132    PG          Kyrie Irving  1  0  0  0 0    0    0    0    0   0

Я попытался создать новый data.frame и назначить каждую строку, отфильтровав этот data.frame до нужной позиции и выбрав top, но этот logi c усложняется для последующих строк и рискует потерять имя из-за фильтрации.

Буду очень признателен за любую помощь здесь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...