r - 将适当的子集四分位数附加到数据集
问题描述
我正在尝试向 NBA 球员数据集添加两列。第一列将确定玩家年龄在数据集中所有玩家中的四分位数。第二个附加栏将确定单个球员的年龄在他的位置(即控球后卫、小前锋、中锋等)中的哪个四分位数。我可以使用 dplyr 包根据玩家位置计算子集年龄四分位数,但我不知道如何将其连接回原始数据集,或者这是否是正确的方法。
我已经使用 dplyr 根据位置计算子集年龄四分位数。曾尝试使用其他包,如 blurjoin,但使用它们感觉不太舒服。
#Incorporate necessary packages
library(ballr)
library(magrittr)
library(dplyr)
library(tidyverse)
#Establish full player table
players <- NBAPerGameAdvStatistics(season = 2018)
#Calculates Quartiles for Each Position
Pos_quartiles <- players %>%
group_by(pos) %>%
summarise(age = list(enframe(quantile(age, probs=c(0.25,0.5,0.75,1.0))))) %>%
unnest
我希望拥有包含 664 个观察值和 32 个变量的玩家数据集,其中最后两个已作为此过程的结果添加。额外的行将显示基于所有球员的球员年龄四分位数,以及基于位置的球员年龄四分位数。
解决方案
我们可以使用base::cut
with quantile 来获得合适的四分位数
library(dplyr)
players %>%
mutate(quar_all=cut(age, breaks=c(0,quantile(age, probs=c(0.25,0.5,0.75,1.0))),labels = FALSE)) %>%
group_by(pos) %>%
mutate(quar_pos=cut(age, breaks=unique(c(0,quantile(age, probs=c(0.25,0.5,0.75,1.0)))),labels = FALSE))
请注意在我得到错误时使用的quar_posunique
cut.default(age,breaks = quantile(age, probs = c(0.25, 0.5, : 'breaks' 不是唯一的) 中的错误
unique
Didzis Elferts在这里提出了类似的错误,因此正如 Didzis 提到的那样,预计受影响群体的四分位数会更少。
推荐阅读
- javascript - 如何在旋转图像 CSS 或 Javascript 时使背景图像填充空白(在 div 上)?
- ssl - WSO2 身份服务器和分析无法正常工作
- linux - unshare 如何在没有真正 root 的情况下使用 chroot?
- python - 如何从 AWS Lambda 将 Service Now 票证列表返回到 AWS Lex?
- nestjs - 如何混淆 NestJS
- python - 如何从 Python 句子列表中打印单个句子?
- nuxt.js - 如何从覆盖中选择一种颜色作为默认颜色?
- python - Python - 将日期时间对象与列表中的下一个对象进行比较
- php - PHP-正则表达式匹配两个以上字母的单词
- javascript - 使用对象解构反应问题