У меня есть много разных 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
Я хочу изменить порядок данных. кадр строго по позициям. Макет, который я хочу, выглядит следующим образом:
- PG
- SG
- SF
- PF
- C
- PG или SG
- SF или PF
- любое
Каждая строка ДОЛЖНА содержать указанную позицию. например. в строке 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 усложняется для последующих строк и рискует потерять имя из-за фильтрации.
Буду очень признателен за любую помощь здесь!