【问题标题】:Selecting data in summarize based on another column in R if it == max(salary)如果 == max(salary),则根据 R 中的另一列在汇总中选择数据
【发布时间】:2019-01-14 04:25:57
【问题描述】:

首先感谢您浏览我的问题。

我目前正在探索 19 年的 NBA 数据,其中包含 7978 个观测值和 56 个变量。这些信息是从 2000 年到 2018 年 NBA 常规赛收集的。我目前正在探索常规赛中的不同变量如何影响 NBA 薪水。变量包括 ppg、有效投篮命中率、身高、学校等......

无论如何,我想做的就是探索这 19 年中每年最好和最差的球队,然后将它们进行比较。

现在我正试图弄清楚如何编写我的总结,以便包括薪水最高的球员姓名,或每场比赛的得分或最高的有效投篮命中率。

例如,休斯顿火箭队在 2018 年 NBA 赛季赢得了 65 场比赛,我知道詹姆斯哈登是他们薪水最高的球员。我想在 NameTopSal 中显示他的名字,方法是根据薪水列 == 到 max(salary) 选择他的名字。

下面是我写的代码。

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)) 

我们将不胜感激任何有关此事的帮助。

提前致谢。

【问题讨论】:

标签: r select dplyr summarize


【解决方案1】:

要选择一个向量 (name) 的元素对应于另一个向量 (salary) 的最大值,您可以测试哪个 salary 元素是最大值并将其用作索引:

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

这很常见,有一个实用函数,which.max,所以我们可以简化做

name[which.max(salary)]

which.max 对于您的用例来说比which(...) 更好,因为它将返回 first 最大值的索引(如果多个值等于最大值),这意味着它可以在内部很好地工作summarize.

【讨论】:

    猜你喜欢
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多