【问题标题】:Using group_by function from dplyr, is there a way to group ranges of a single variable?使用 dplyr 的 group_by 函数,有没有办法对单个变量的范围进行分组?
【发布时间】:2019-11-14 04:21:55
【问题描述】:

我正在查看 NBA 统计数据,尤其是场均得分和薪水。目前使用dplyr's group_by 函数在 R 中总结它们。我正在尝试对 PPG 进行分组,以查看每场比赛得分特定范围的球员的薪水。目前它只列出了我数据中的每一个 PPG 值,有没有办法将它变成一个范围。例如 0-10 PPG、10-20 PPG、20-30 PPG 和 30+。

这是我目前的代码行:

cps3 <- cps1 %>% group_by(PPG) %>%
       summarize(Mean_Salary = mean(Salary),
                 Min_Salary = min(Salary),
                 Max_Salary = max(Salary),
                 Number_of_Salaries = n())

cps1 只是我的数据集。

【问题讨论】:

  • 欢迎来到 Stackoverflow。请提供一小部分数据样本。
  • 看看cut函数。例如cps1 %&gt;% mutate(ppg_range = cut(ppg, seq(0, 100, 5), include.lowest=TRUE)).
  • 你也可以在 mutate cps1 %&gt;% mutate(ppg_range = case_when(ppg &gt; 0 &amp; ppg =&lt; 10 ~ "0-10 PPG", ppg &gt; 10 &amp; &lt;= 20 ~ "10-20 PPG")) 中使用 case_when 函数

标签: r dataframe dplyr


【解决方案1】:

您只需为组创建新变量并将其用作分组变量。

cps1 %>% 
 mutate(PPG_tenths = floor(PPG/10)  ) %>%
 group_by(PPG_tenths ) %>%
 summarize(
   Mean_Salary = mean(Salary), 
   in_Salary = min(Salary), 
   Max_Salary = max(Salary), 
   Number_of_Salaries = n()
)

【讨论】:

  • 如果您只需要 3 个组,您可以使用带有 case_when 的 mutate 将所有案例 PPG_tenths > 3 更改为 3。
猜你喜欢
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 2019-12-20
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多