Я стремлюсь сжать фрейм данных, основанный на различных аргументах из нескольких переменных, и я не совсем уверен в том, как добиться этого самым простым способом.Я думаю, что для этого понадобятся какие-то персонализированные функции, но у меня нет большого опыта в написании функций.
По сути, мой фрейм данных в настоящее время выглядит так:
chainID teamID statID startType endType
1 Team A Effective Pass TO TO
1 Team A Effective Pass TO TO
1 Team A Effective Pass TO TO
1 Team A Effective Pass TO TO
1 Team A Ineffective Pass TO TO
2 Team B Effective Pass TO SH
2 Team B Entry TO SH
2 Team B Effective Pass TO SH
2 Team B Shot TO SH
3 Team A Effective Pass ST TO
3 Team A Entry ST TO
3 Team A Ineffective Pass ST TO
4 Team B Effective Pass TO ST
4 Team B Effective Pass TO ST
4 Team B Ineffective Pass TO ST
5 Team A Effective Pass TO SH
5 Team A Entry TO SH
5 Team A Goal TO SH
6 Team B Effective Pass CB TO
6 Team B Effective Pass CB TO
6 Team B Ineffective Pass CB TO
7 Team A Effective Pass TO ST
7 Team A Ineffective Pass TO ST
Что я хочу сделать, так это всякий раз, когда слово Entry
появляется в столбце statID
для любого chainID
, я хочу сохранить эту строку и последнюю строку для этого chainID
, удаляя при этом все остальные строки для этогов частности chainID
(см. chainID 2 и 5).Кроме того, мне также нужно, чтобы, если chainID включал Entry в statID, но последняя строка в этом конкретном chainID не заканчивается в Goal или Shot, тогда я хочу, чтобы следующий chainID оставался в наборе данных, как показано в моем примере.с chainID 3 и 4. Затем функция продолжает искать вхождения Entry для chainID, как это было в начале.Например,
chainID teamID statID startType endType
2 Team B Entry TO SH
2 Team B Shot TO SH
3 Team A Entry ST TO
3 Team A Ineffective Pass ST TO
4 Team B Effective Pass TO ST
4 Team B Effective Pass TO ST
4 Team B Ineffective Pass TO ST
5 Team A Entry TO SH
5 Team A Goal TO SH