Выбор данных в сумме на основе другого столбца в R, если они == max (зарплата) - PullRequest
0 голосов
/ 14 января 2019

Прежде всего, спасибо за просмотр моего вопроса.

В настоящее время я изучаю данные NBA за 19 лет, в которых имеется 7978 наблюдений и 56 переменных. Информация собирается с регулярного сезона НБА с 2000 по 2018 год. В настоящее время я изучаю, как различные переменные в течение регулярного сезона влияют на зарплату НБА. Переменные включают ppg, эффективный процент полевых целей, рост, школу и т. Д.

В любом случае, я хотел изучить лучшую и худшую команду для каждого из 19 лет, а затем сравнить их.

Сейчас я пытаюсь выяснить, как написать свое резюме, чтобы оно включало в себя имя игрока, у которого была самая высокая зарплата, или количество очков за игру или самый высокий процент эффективных полевых целей.

Например, «Хьюстон Рокетс» выиграли 65 игр в сезоне НБА 2018 года, и я знаю, что Джеймс Харден был их самым высокооплачиваемым игроком. Я хочу показать его имя в NameTopSal, выбрав его имя на основе столбца зарплаты == до максимума (зарплата).

Ниже приведен код, который я написал.

data %>% subset(PlayerYear == 2018 & team == "HOU",
              select = name:SalCap) %>% 
  summarize(total = sum(salary),TopPaid = max(salary),
            #NameTopSal = select(name, salary == max(salary)),
            highscore = max(ppg), 
            #NameTopPpg = subset(salary == max(salary), select = name),
            efficient = max(EFG),
            #NameTopEFG = subset(salary == max(salary), select = name),
            HighPlusMinus = max(PlusMinus),
            #NameTopPM = subset(salary == max(salary), select = name),
            LeastPaid = min(salary), 
            #NameLowSal = subset(salary == min(salary), select = name),
            AvgSal = mean(salary), 
            tmsalary = median(tmsalary), salcap = median(SalCap),
            OverUnder = (median(tmsalary)/(median(SalCap))), 
            wins = median(TeamWins)) 

Любая помощь по этому вопросу будет принята с благодарностью.

Заранее спасибо.

1 Ответ

0 голосов
/ 14 января 2019

Чтобы выбрать элемент одного вектора (name), соответствующий наибольшему значению другого вектора (salary), вы можете проверить, какой элемент salary является максимальным, и использовать его в качестве индекса:

name[which(salary == max(salary))]

Это достаточно распространено, что для него есть служебная функция, which.max, поэтому мы можем упростить выполнение

name[which.max(salary)]

which.max лучше, чем which(...) для вашего варианта использования, потому что он вернет индекс first max (если несколько значений равны max), что означает, что он будет хорошо работать внутри summarize.

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